Преобразование Get-WmiObject win32_diskdrive в массив в Powershell 4

Как преобразовать команду Get-WmiObject в массив и добавить ее в поле со списком?

Это командная строка:

Get-WmiObject -Query "select DeviceID from win32_diskdrive" | Select-Object -ExpandProperty  DeviceID | ft -HideTableHeaders -AutoSize | Out-String

И это результат вывода:

\.\PHYSICALDRIVE0
\.\PHYSICALDRIVE1

Я хотел бы написать это как

"\.\ФИЗИЧЕСКИЙ ДРАЙВ0","\.\ФИЗИЧЕСКИЙ ДРАЙВ1"

Спасибо за помощь!


person Erick Batista    schedule 27.07.2016    source источник


Ответы (1)


Вывод из Get-WmiObject ... |Select-Object ... является уже массивом — Format-Table -HideTableHeaders просто выводит каждый объект построчно.

Если вам нужна строка, которую вы описываете в своем вопросе, вообще избегайте командлетов Format-* и Out-String:

PS C:\> $DiskDrives = Get-WmiObject -Query "SELECT DeviceID FROM Win32_DiskDrive" |Select-Object -ExpandProperty DeviceID
PS C:\> $DiskDrives -join ','
\\.\PHYSICALDRIVE0,\\.\PHYSICALDRIVE1

Для двойных кавычек (") вокруг каждого элемента я бы выбрал оператор формата -f:

PS C:\> $DiskDrives.ForEach({'"{0}"' -f $_}) -join ','
"\\.\PHYSICALDRIVE0","\\.\PHYSICALDRIVE1"
person Mathias R. Jessen    schedule 27.07.2016
comment
Это работает очень хорошо для меня! Большое спасибо за помощь! - person Erick Batista; 28.07.2016