【问题标题】:Convert Get-WmiObject win32_diskdrive to array in Powershell 4将 Get-WmiObject win32_diskdrive 转换为 Powershell 4 中的数组
【发布时间】:2016-07-27 20:24:37
【问题描述】:
如何将 Get-WmiObject 命令转换为数组并将其添加到组合框?
这是命令行:
Get-WmiObject -Query "select DeviceID from win32_diskdrive" | Select-Object -ExpandProperty DeviceID | ft -HideTableHeaders -AutoSize | Out-String
这是输出结果:
\.\PHYSICALDRIVE0
\.\PHYSICALDRIVE1
我想这样写
"\.\PHYSICALDRIVE0","\.\PHYSICALDRIVE1"
感谢您的帮助!
【问题讨论】:
标签:
arrays
powershell
get-wmiobject
【解决方案1】:
Get-WmiObject ... |Select-Object ... 的输出是已经是一个数组 - Format-Table -HideTableHeaders 只是逐行输出每个对象。
如果您想要在问题中描述的字符串,请完全避免使用 Format-* 和 Out-String cmdlet:
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"