我正在使用此命令获取Windows
中的驱动器列表:
get-wmiobject win32_volume | ? { $_.DriveType -eq 3 } | % { get-psdrive $_.DriveLetter[0] }
这给出了:
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
C 131.85 333.62 FileSystem C:\
D 111.15 200.63 FileSystem D:\
我真正想要的是“Root”列下的值列表。
基本上是一个字符串,如下C:\ D:\
我该怎么做?
修改:
我管理这样做:
get-wmiobject win32_volume | ? { $_.DriveType -eq 3 } | % { get-psdrive $_.DriveLetter[0] } | Select Root
哪个给:
Root
----
C:\
D:\
如何将其转换为:
C:\ D:\
答案 0 :(得分:1)
试试这个:
(get-wmiobject win32_volume | ? { $_.DriveType -eq 3 } | % { get-psdrive $_.DriveLetter[0] }).Root
它将逐行显示:
C:\
D:\
否则你可以这样做,以便并排:
(get-wmiobject win32_volume | ? { $_.DriveType -eq 3 } | % { get-psdrive $_.DriveLetter[0] }).Root -join " "
它将输出如下:
C:\ D:\
希望它有所帮助。
答案 1 :(得分:1)
为了防止错误:
Cannot index into a null array.
At line:1 char:82
+ ... 3 } | % {$_.DriveLetter} | % { get-psdrive $_.DriveLetter[0] } | Sel ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
我会在-and $_.DriveLetter
子句中包含Where
。
我认为没有必要使用Get-PSDrive
因为Name
已经提供了所需的输出。
因此:
get-wmiobject win32_volume | ? {$_.DriveType -eq 3 -and $_.DriveLetter} | Select -Expand Name