Оба примера не работают из-за неправильного синтаксиса PowerShell. В следующем коде перечислены размеры томов текущего хоста (с помощью PowerShell 5.0):
Get-WmiObject win32_logicalDisk -filter "DriveType=3" | %{ $_.DeviceID; $_.FreeSpace/1GB }
В следующем коде перечислены размеры томов хостов, перечисленных в server.txt :
Get-Content server.txt | %{ Get-WMIObject –computername $_ Win32_LogicalDisk -filter "DriveType=3" | %{ $_.DeviceID; $_.FreeSpace/1GB } }
Примечание
Обратите внимание, что внешний заполнитель $_
перечисляет адреса сервера, тогда как внутренний заполнитель $_
перечисляет устройства. Это частая ошибка для новичков в PowerShell. Если вы хотите использовать адрес сервера во внутреннем цикле, вам нужно будет присвоить его новой переменной во внешнем цикле.
Программное обеспечение форума, используемое здесь, имеет недостатки. В предварительном просмотре он отображается $_
правильно, $_
даже если не экранирован как код. Но последний пост удаляет подчеркивание, что делает примеры PowerShell некорректными.