Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Активные темы » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 11060 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS 2, 08:24 19-06-2021
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
westlife
 
Я не могу понять, зачем городить лишние ручные циклы по дискам и разделам.
Они уже есть внутри реализаций Get-Disk и Get-Partition  

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 15:11 11-02-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
westlife, LevT
Спасибо за наводки!
Нравится такой вариант:

Код:
 
Get-Partition | Where-Object {$_.IsBoot -eq $false} | Get-Volume | Where-Object {$_.DriveLetter -ne $null}
 

Но при в ставленном USB-диске также показывает и его. Как с без Get-Disk завернуть проверку на

Код:
 
$_.BusType -ne "USB"
 

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 15:18 11-02-2019
westlife



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Я не могу понять, зачем городить лишние ручные циклы по дискам и разделам.
Они уже есть внутри реализаций Get-Disk и Get-Partition

Просто написал такой вариант. Его можно использовать и для чего то другого.
Добавлю сейчас по вашему принципу.
 
Добавлено:
Добавил.

Всего записей: 1390 | Зарегистр. 12-12-2006 | Отправлено: 15:19 11-02-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
Как с без Get-Disk завернуть проверку на

 
Может статься, что и никак.
"Сюрприз" с BusType USB  - лишь самый мелкий сюрприз из ситуаций, для которых приспособлен модуль Storage
 
 
Добавлено:
 
Тебе шашечки или ехать?
Для того, чтобы содержимое тома-помойки было смонтировано по заданному пути, можно полагаться на
 
1) автоматическое назначение буквы.  С недостатками ты уже столкнулся, иначе и вопросов не задавал бы.
 
2) ручное/скриптом назначение буквы согласно метке тома
Или как вариант колхоз с файловыми метками, популярными в иных кругах из-за ограничений cmd
 
3) автоматическое монтирование по известному пути.
Один раз примонтировать содержимое в папку файловой системы загрузочного раздела винды - и папка останется NTFS-ссылкой, ведущей в нужное место.
Это делается через менеджер дисков или Add-PartitionAccessPath

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 15:24 11-02-2019 | Исправлено: LevT, 16:16 11-02-2019
westlife



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
Но при в ставленном USB-диске также показывает и его

Этот вариант показывает все разделы в системе с буквами, кроме системного. У меня 4 отображает.

Всего записей: 1390 | Зарегистр. 12-12-2006 | Отправлено: 15:31 11-02-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
Но при в ставленном USB-диске также показывает и его.

и не только USB, любой дополнительный диск, не имеющий загрузочного сектора, также будет выбран.
Правильнее, всё же так:
Сначала отбор дисков, имеющих статус загрузочного, а затем на них уже отбор незагрузочных разделов (хотя, если разделов будет больше одного, то и однозначности с буквой не будет), имеющих букву driveletter:

Код:
get-disk|? isboot|get-partition |?{$_.isboot -ne $true -and [int][char]$_.driveletter -ne 0}

но опять же, если в зоопарке подключенных дисков попадется ещё один, имеющий загрузочный сектор и разбитый на логические разделы, то он также попадет в список...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:19 11-02-2019 | Исправлено: YuS_2, 12:17 12-02-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Условия флешмоба я не особо понял но поучаствую:

Код:
Get-PhysicalDisk | Get-Disk | ? BootFromDisk -EQ $false | ? BusType -EQ 'SATA' | Get-Partition | ? IsHidden -EQ $false | ? Type -EQ 'Basic' | Get-Volume


Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 20:23 11-02-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
поучаствую

Спасибо, проверю )

Цитата:
Условия флешмоба я не особо понял

Грех смеяться над больными!
 

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 22:21 11-02-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21

Цитата:
? BusType -EQ 'SATA'

- Это не лучший вариант...  
Например, у меня:

Код:
BusType               : ATA

А этого параметра:

Цитата:
? Type -EQ 'Basic'

в принципе нет.
 
А в целом, выбор идет сразу незагрузочного диска

Цитата:
? BootFromDisk -EQ $false

поэтому, тот самый:
 11-02-2019

Цитата:
диск один и разбит на два логических, где C — загрузочный, а D — для хранения файлов.

который был нужен, найден не будет...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 22:36 11-02-2019
dragovich01

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
имеется скрипт для вычисления имени компьютера по имени пользователя и даже работает))
только выполняется минут 7-10, хотелось бы ускорить это дело. В интернете нашел подсказки что можно распараллелить цикл, пробовал и так и сяк пока не получается, подскажите как можно это сделать.
 
сам скрипт
Подробнее...

Всего записей: 104 | Зарегистр. 03-09-2014 | Отправлено: 06:45 12-02-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dragovich01
Я, конечно, не "хакер", но, по-моему, быстрее будет, если использовать CIM вместо WMI.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 08:36 12-02-2019
dragovich01

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
пожалуйста поподробней можно?

Всего записей: 104 | Зарегистр. 03-09-2014 | Отправлено: 08:37 12-02-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dragovich01
Наверное, так:

Код:
 
$comp = Get-ADComputer -Filter * | Where-Object {$_.Enabled -eq $true} | Select-Object Name | Sort-Object Name
Foreach ($pc in $comp)
{
    IF (Test-Connection -ComputerName $pc.Name -Count 1 -Quiet)
    {
        $CIMSession = New-CimSession -ComputerName $RemoteComputer
        Get-CimInstance Win32_ComputerSystem -CimSession $CIMSession -Property Username, Name | Out-File -Append "C:\Temp\test.txt"
    }
}
Select-String "User1" C:\Temp\test.txt
 

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 09:08 12-02-2019
dragovich01

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
вместо $RemoteComputer в моем случае нужно подставить $pc.Name?

Всего записей: 104 | Зарегистр. 03-09-2014 | Отправлено: 09:21 12-02-2019
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dragovich01
Даже без распараллеливания сначала уберите фуфлокод
 

Код:
 
$Computer = Get-ADComputer -Filter * | Where-Object { $_.enabled -eq $true }
$Computer.name | Get-CimInstance win32_computersystem -ea SilentlyContinue | Where Username -match User1
 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 09:50 12-02-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возвращаясь к моей idee fixe...
Какой-то монстр вышел. Можно ли сделать лучше?

Код:
 
param(
    [Parameter(Mandatory = $true)]
    [string]$drive
)
$drive = $drive + ':'
Function KnownFolderPath
{
    Param (
        [Parameter(Mandatory = $true)]
        [ValidateSet('Documents', 'Downloads')]
        [string]$KnownFolder,
 
        [Parameter(Mandatory = $true)]
        [string]$Path
    )
    $KnownFolders = @{
    'Documents' = @('FDD39AD0-238F-46AF-ADB4-6C85480369C7','F42EE2D3-909F-4907-8871-4C22FC0BF756');
    'Downloads' = @('374DE290-123F-4565-9164-39C4925E467B','7D83EE9B-2244-4E70-B1F5-5393042AF1E4');
    }
    $Type = ([System.Management.Automation.PSTypeName]'KnownFolders').Type
    $Signature = @'
    [DllImport("shell32.dll")]
    public extern static int SHSetKnownFolderPath(ref Guid folderId, uint flags, IntPtr token, [MarshalAs(UnmanagedType.LPWStr)] string path);
'@
    $Type = Add-Type -MemberDefinition $Signature -Name 'KnownFolders' -Namespace 'SHSetKnownFolderPath' -PassThru
    # return $Type::SHSetKnownFolderPath([ref]$KnownFolders[$KnownFolder], 0, 0, $Path)
    ForEach ($guid in $KnownFolders[$KnownFolder])
    {
        $Type::SHSetKnownFolderPath([ref]$guid, 0, 0, $Path)
    }
    Attrib +r $Path
}
$Downloads = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{374DE290-123F-4565-9164-39C4925E467B}"
IF ($Downloads -ne "$drive\Загрузки")
{
    IF (!(Test-Path -Path $drive\Загрузки))
    {
        New-Item -Path $drive\Загрузки -Type Directory -Force
    }
    KnownFolderPath -KnownFolder Downloads -Path "$drive\Загрузки"
    New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{7D83EE9B-2244-4E70-B1F5-5393042AF1E4}" -Type ExpandString -Value "$drive\Загрузки" -Force
}
$Documents = Get-ItemPropertyValue -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name Personal
IF ($Documents -ne "$drive\Документы")
{
    IF (!(Test-Path -Path $drive\Документы))
    {
        New-Item -Path $drive\Документы -Type Directory -Force
    }
    KnownFolderPath -KnownFolder Documents -Path "$drive\Документы"
    New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -Name "{F42EE2D3-909F-4907-8871-4C22FC0BF756}" -Type ExpandString -Value "$drive\Документы" -Force
}
 

 
Добавлено:
dragovich01
Лучше послушать более опытных завсегдатаев на предмет, что исправить. Я лишь посоветовал отказаться от WMI, так как это был удел PowerShell 2.0.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 10:11 12-02-2019 | Исправлено: farag, 10:20 12-02-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
Возвращаясь к моей idee fixe...

Что за идея?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:23 12-02-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
http://forum.ru-board.com/topic.cgi?forum=62&topic=30859&start=1160#11
 
Не смог "разработать" метод вычленения нужной буквы у дисков при общем условии, чтобы потом взять букву и создать на нем папки Загрузки и Документы.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 11:26 12-02-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
метод вычленения нужной буквы у дисков при общем условии

А:
 11-02-2019
не?

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:51 12-02-2019
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Все работает ровно до того, когда имеется ПК с 1 диском, разбитым на 2.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 12:35 12-02-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Активные темы » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru