2017-08-10 1 views
1

ich diesen Befehl bin mit meiner Liste meiner Laufwerke bekommen Windows:Powershell erhalten eine Liste der Laufwerke

get-wmiobject win32_volume | ? { $_.DriveType -eq 3 } | % { get-psdrive $_.DriveLetter[0] } 

Das gibt:

Name   Used (GB)  Free (GB) Provider  Root 
----   ---------  --------- --------  ---- 
C     131.85  333.62 FileSystem C:\ 
D     111.15  200.63 FileSystem D:\ 

Was ich will, ist eigentlich zu bekommen die Liste der Werte in der Spalte "Root". Grundsätzlich eine Zeichenfolge wie folgt C:\ D:\

Wie kann ich das tun?

EDIT:

I Managed dies zu tun:

get-wmiobject win32_volume | ? { $_.DriveType -eq 3 } | % { get-psdrive $_.DriveLetter[0] } | Select Root 

Welche Gibt:

Root 
    ---- 
    C:\ 
    D:\ 

Wie konvertiere ich es zu:

C:\ D:\ 
+0

@LotPings Wo Kommissionierung Sie nur die Wurzel. Er erwartet, nur die Wurzel auszuwählen –

+0

Verwenden: 'Select -Expand Root' Aber Ihre Abfrage hat einen Fehler, abhängig von den Laufwerken (nicht) verfügbar, die Sie erhalten können, kann nicht in ein Null-Array auf Get-psdrive $ _ .DriveLetter [0] ' – iRon

+0

@iRon wie würden Sie vorschlagen, es zu beheben? – avi

Antwort

1

versuchen Sie dies:

(get-wmiobject win32_volume | ? { $_.DriveType -eq 3 } | % { get-psdrive $_.DriveLetter[0] }).Root 

Es Zeile für Zeile zeigen wie:

C:\ 
D:\ 

Else Sie so tun können, um sie nebeneinander zu erhalten:

(get-wmiobject win32_volume | ? { $_.DriveType -eq 3 } | % { get-psdrive $_.DriveLetter[0] }).Root -join " " 

Es wird eine Ausgabe wie dies:

C:\ D:\ 

Hoffe es hel ps.

0

Um Fehler wie zu verhindern:

Cannot index into a null array. 
At line:1 char:82 
+ ... 3 } | % {$_.DriveLetter} | % { get-psdrive $_.DriveLetter[0] } | Sel ... 
+          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (:) [], RuntimeException 
    + FullyQualifiedErrorId : NullArray 

I -and $_.DriveLetter in der Where Klausel enthalten würde.

Und ich denke, dass es keine Notwendigkeit gibt, Get-PSDrive zu verwenden, da die erforderliche Ausgabe bereits in der Name verfügbar ist.

So:

get-wmiobject win32_volume | ? {$_.DriveType -eq 3 -and $_.DriveLetter} | Select -Expand Name 
Verwandte Themen