![Anzeigen aller zugänglichen Laufwerke in PowerShell](https://rvso.com/image/1416714/Anzeigen%20aller%20zug%C3%A4nglichen%20Laufwerke%20in%20PowerShell.png)
Mir ist aufgefallen, dass cd \ zum Stammverzeichnis meines Laufwerks navigiert.
Es gibt aber noch weitere Laufwerke auf die ich auf meinem Rechner zugreifen kann.
Gibt es in PowerShell einen Befehl, der alle Laufwerke auflistet, mit denen ich eine Verbindung herstellen kann?
Antwort1
Dies hängt etwas davon ab, was Sie als „Laufwerk“ bezeichnen. In PowerShell gibt es Laufwerke, die Ihre üblichen lokalen oder netzwerkzugeordneten Volumes darstellen, sowie Laufwerke, die andere Objekte wie Aliase, Umgebungsvariablen, Funktionen, PowerShell-Variablen, Registrierungsstrukturen und mehr enthalten.
Um eine Liste aller „Laufwerke“ in PowerShell anzuzeigen, verwenden Sie:
Get-PSDrive
Oder Sie können den integrierten Alias verwenden:
gdr
Get-PSDrive
( Sie können es überall unten ersetzen gdr
.)
Um nur Dateisystemlaufwerke abzurufen, z. B. lokale oder im Netzwerk zugeordnete Volumes oder Medienschächte, verwenden Sie:
Get-PSDrive -PSProvider FileSystem
Zu bekommenNurlokale Laufwerke oderNurFestplatten, ich konnte keine geeignete Eigenschaft oder Methode in den Objekten finden, nach denen ich Get-PSDrive
filtern konnte. Ein wenig googeln später fand ichMicrosofts Get-PSDrive-Dokumentation auf TechNetDort sind neben Einzelheiten zur Verwendung Get-PSDrive
auch einige andere über PowerShell zugängliche Methoden zur Laufwerksaufzählung aufgeführt. Eine Methode, die ich nützlich fand, ist die über die Klasse System.IO.DriveInfo im .NET Framework.
Der folgende, über PowerShell ausführbare Befehl listet nur lokale Festplatten auf.
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -eq 'Fixed'}
Wenn Sie beliebige lokale Laufwerke einschließen möchten – nicht nur Festplatten – verwenden Sie Folgendes:
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -ne 'Network'}
Wenn Sie nur Laufwerkbuchstaben sehen möchten, leiten Sie die Ausgabe Select-Object
wie folgt an weiter:
[System.IO.DriveInfo]::getdrives() | Where-Object {$_.DriveType -ne 'Network'} | Select-Object -Property Name
Beachten Sie, dass Where-Object
und Select-Object
auch integrierte Aliase von ?
und select, respectively. (
Where-Object is also usable as
where` haben - es ist wirklich nur eine Frage der Präferenz.) Die Klasse System.IO.DriveInfo kann auch auf IO.DriveInfo verkürzt werden. Der letzte Befehl könnte also wie folgt ausgeführt werden, wenn Sie möchten:
[IO.DriveInfo]::getdrives() | ? {$_.DriveType -ne 'Network} | select -Property Name
Natürlich gibt es noch viel mehr, was Sie mit tun können Get-PSDrives
, und die .NET-Klassen, auf die über PowerShell zugegriffen werden kann, sowie viele andere verfügbare PowerShell-Verknüpfungen. Ich empfehle, sich auf TechNet und ähnlichen Websites weiterzulesen und die Cmdlets und zu verwenden, Get-Help
um Get-Command
sich besser mit der Umgebung vertraut zu machen.
Antwort2
Verwenden Sie den folgenden Befehl, powershell
um alle Laufwerke auf Ihrem PC aufzulisten
gdr -PSProvider 'FileSystem'
oder
Get-PSDrive -PSProvider 'FileSystem'