Powershell获取驱动器列表

时间:2017-08-10 07:52:08

标签: powershell

我正在使用此命令获取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:\

2 个答案:

答案 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