在PowerShell中,我想将deviceid
(此处为类型2)的驱动器(drivetype
)写入数组(变量$letters
)。驱动器应按如下方式排序:
$ letters = @(“a:”,“b:”)等。
我找到的下面一行可以正常使用win32_diskdrive
,但我无法添加驱动器类型。
$letters = Get-WmiObject win32_diskdrive |
Where {$_.interfacetype -Like "USB"} |
ForEach {Get-WmiObject -Query "ASSOCIATORS OF {Win32_DiskDrive.DeviceID=`"$($_.DeviceID.replace('\','\\'))`"} WHERE AssocClass = Win32_DiskDriveToDiskPartition"} |
ForEach {Get-WmiObject -Query "ASSOCIATORS OF {Win32_DiskPartition.DeviceID=`"$($_.DeviceID)`"} WHERE AssocClass = Win32_LogicalDiskToPartition"} |
ForEach {$_.deviceid}
下面一行包含Win32_LogicalDisk
而不是win32_diskdrive
,但我无法获得像$letters = @("a:", "b:")
$letters = Get-WMIObject Win32_LogicalDisk -filter DriveType=2 | Select ($_.deviceid)
给出
\\WIN7\root\cimv2:Win32_LogicalDisk.DeviceID="H:"
如何将drivetype
与win32_diskdrive
合并,或者我如何只使用Win32_LogicalDisk
获得“H:”?
答案 0 :(得分:0)
您不应该以{{1}}的方式使用$_
。您只需要输入要返回的属性即可。在您的情况下:DeviceID。如果您只想要USB设备中的字符串,那么您就近了。
Select-Object
$letters = Get-WMIObject Win32_LogicalDisk -filter DriveType=2 | Where-Object {$_.Size -gt 0} | Select -ExpandProperty deviceid
将返回字符串数组而不是属性为-ExpandProperty deviceid
的对象
从评论和其他答案中更新
我们可以轻松进行小幅更新,以确保您获得具有可测量大小的驱动器。如果你移动where子句并注意我之前试图告诉你的DeviceID
,我们将在解决你的其他答案过程中加入这个-replace
。
答案 1 :(得分:0)
这是我的解决方案。工作正常。
$letters = Get-WMIObject Win32_LogicalDisk -filter DriveType=2 | Select -Property deviceid, size | where {$_.size -gt 0}
$letters = $letters -replace '@{deviceid='
$letters = $letters -replace "size="
$letters = $letters -replace "}"
$letters = $letters -replace ""
$letters = $letters -replace '@{size='
$letters = $letters -replace '}'
$letters = $letters -replace '@{size='
$letters = $letters -replace ';'
$letters = $letters -replace '0'
$letters = $letters -replace '1'
$letters = $letters -replace '2'
$letters = $letters -replace '3'
$letters = $letters -replace '4'
$letters = $letters -replace '5'
$letters = $letters -replace '6'
$letters = $letters -replace '7'
$letters = $letters -replace '8'
$letters = $letters -replace '9'
$letters = $letters -replace ':'
$letters = $letters -replace ' '
也许有更简单的方法来取代所有这些东西。但它对我来说很好: - )