2017-08-30 4 views
3

Ich versuche, eine Liste der Laufwerksbuchstaben in einem Dropdown-Menü zu erhalten. Ich bin derzeit mit dem nachfolgenden Code und es funktioniert gut in Windows 10, aber überhaupt nicht 7.So erhalten Sie eine Liste der Laufwerkbuchstaben in Powershell 2.0

 $Drive_Letters = Get-WmiObject Win32_LogicalDisk 
    ForEach ($Drives in $Drive_Letters.DeviceID) { $Dest_Drive_Box.Items.Add($Drives) } 

In Win 7 ich den Code der Anpassung an diese versuchte, in Windows arbeitet ...

Aber jetzt zeigt es "@ DeviceID = C:}", "@ DeviceID = D:}" usw. in Win 7 und 10 für jeden Laufwerksbuchstaben. Ich muss nur "C:", "D:" usw. anzeigen.

Vielen Dank!

+2

'Select-Object DeviceID' ->' Select-Object -Expand DeviceID' –

+0

Dank Mathias! Ich habe "-Expand" vergessen. Scheint in 7 und 10 zu funktionieren. – sloppyfrenzy

Antwort

2
Get-PSDrive 

Dadurch werden alle in der aktuellen Sitzung zugeordneten Laufwerke zurückgegeben. Die Eigenschaft Name enthält den Laufwerkbuchstaben.

So erfassen nur Laufwerksbuchstaben:

(Get-PSDrive).Name -match '^[a-z]$' 

Getestet in pSV2 arbeiten:

Get-PSDrive | Select-Object -ExpandProperty 'Name' | Select-String -Pattern '^[a-z]$' 
+1

'-replace 'auf deinem Gerät', 'in der aktuellen Sitzung'' –

+0

@ MathiasR.Jessen True. Es erfasst jedoch die meisten Anwendungsfälle. Ich aktualisierte meine Antwort – TheIncorrigible1

+0

Auch erwähnenswert, dass "Get-PSDrive" enthält _PS-spezifische_ Laufwerke, die externe Programme nicht sehen. – mklement0

0

Es dass jedes Element Schlüsselwertpaar DeviceID = driveletter einen schnellen Test zeigt $drives ist eine HashTable mit einem erscheinen würde Das Verwenden von $Drives.DeviceID gibt nur den Wert des Schlüsselwertpaars zurück.

ForEach ($Drives in $Drive_Letters) { $Dest_Drive_Box.Items.Add($Drives.DeviceID) } 
+0

Danke, ist das mit oder ohne 'Select-Object DeviceID'? Es scheint nicht zu funktionieren. Sagt, es ist ein Null-Wert-Ausdruck. – sloppyfrenzy

+0

Ich habe es mit 'Select-Object' gemacht – Bpendragon

0
$Drives = Get-WmiObject Win32_Logicaldisk | % {$_.DeviceId} 
$Drives | % {$Dest_Drive_Box.Items.Add($_)} 
+1

Code-only-Antworten sind oft nicht hilfreich, wenn es darum geht, warum das Problem passiert ist. Bitte überlegen Sie, warum Ihr Code das Problem löst. Bitte lesen Sie [Wie schreibe ich eine gute Antwort] (https://stackoverflow.com/help/how-to-answer) – FluffyKitten

Verwandte Themen