У меня странная проблема ...
У меня есть следующий код, который принимает выходные данные из инструмента Sysinternals Disk Usage (ссылка ниже)
Использование диска - Sys Internals
Итак, сначала я получаю физические диски в массив $ Disks, затем перечисляю их через foreach и связываюсь с ними.
моя проблема заключается в этой строке $ Dir = du.exe -q -v $ d.DeviceID
$PC = get-content env:COMPUTERNAME
$Disk = gwmi win32_logicaldisk -filter "drivetype=3"
foreach ($d in $Disk)
{
$Dir = du.exe -q -v $d.DeviceID
$Dir[8..($Dir.length-8)] | foreach {
$Size = $_.substring(0,10).replace(",","")/1024
$Path = $_.substring(10)
}
}
$ d.DeviceID должен быть буквой диска (то есть C:)
затем я заполняю $ Dir выводом из DU.exe, но $ d.DeviceID работает не так, как должно, выполнение этого из задачи дает следующий результат (добавили строку, в которой написано $ d.DeviceID, показать вывод):
B
Невозможно индексировать в пустой массив.
На C: \ DU.ps1: 25 символов: 6
+ $ Dir [<<<< 8 .. ($ Dir.length-8)] | foreach {<br>
+ CategoryInfo: InvalidOperation: (System.Object []: Object []) [],
RuntimeException
+ FullyQualifiedErrorId: NullArray
C
Невозможно индексировать в пустой массив.
На C: \ DU.ps1: 25 символов: 6
+ $ Dir [<<<< 8 .. ($ Dir.length-8)] | foreach {<br>
+ CategoryInfo: InvalidOperation: (System.Object []: Object []) [],
RuntimeException
+ FullyQualifiedErrorId: NullArray
D
Невозможно индексировать в пустой массив.
На C: \ DU.ps1: 25 символов: 6
+ $ Dir [<<<< 8 .. ($ Dir.length-8)] | foreach {<br>
+ CategoryInfo: InvalidOperation: (System.Object []: Object []) [],
RuntimeException
+ FullyQualifiedErrorId: NullArray
запуск его из ISE или просто из командной оболочки не имеет проблем, запуск его на других серверах из всех методов работает.
Я верю, что проблема в заполнении $ Dir vairable, так как у du.exe есть проблема с $ d.DeviceID
Я не понимаю, почему именно этот сервер / задание имеет проблему. я пробовал следующее:
переопределил элемент массива в $ i = $ d.deviceID, чтобы исправить это - ничего
экспортировал задание с другого сервера (оба контроллера домена) импортированный - ничего
перезапустил службу winmgmt - ничего
Я думаю, что это проблема с разрешениями, но я запускаю это на AD в качестве администратора домена с высшими привилегиями.
пожалуйста, вы, ребята, можете помочь с этим, действительно застрял ...
ура
Lee