7 Stimmen

Wie kann ich in PowerShell feststellen, ob das aktuelle Laufwerk ein Netzlaufwerk ist oder nicht?

Ich muss in Powershell wissen, ob das aktuelle Laufwerk ein zugeordnetes Laufwerk ist oder nicht.

Leider funktioniert Get-PSDrive nicht "wie erwartet":

PS:24 H:\temp
>get-psdrive  h

Name       Provider      Root      CurrentLocation
----       --------      ----      ---------------
H          FileSystem    H:\          temp

aber in MS-Dos zeigt "net use", dass H: wirklich ein zugeordnetes Netzlaufwerk ist:

New connections will be remembered.

Status       Local     Remote                    Network
-------------------------------------------------------------------------------
OK           H:        \\spma1fp1\JARAVJ$        Microsoft Windows Network

The command completed successfully.

Was ich tun möchte, ist die Wurzel des Laufwerks zu erhalten und es in der Eingabeaufforderung anzuzeigen (siehe: Anpassen der PowerShell-Eingabeaufforderung - Äquivalent zu CMDs $M$P$_$+$G? )

10voto

Jeff Stong Punkte 1496

Verwenden Sie das .NET-Framework:

PS H:\> $x = new-object system.io.driveinfo("h:\")
PS H:\> $x.drivetype
Network

0 Stimmen

Guter Tipp! Und wie bekomme ich dann das Rootdirectory= Leider zeigt RootDirectory wieder auf H:\...

0 Stimmen

@jjarava -- Ich habe im Nachhinein festgestellt, dass die DriveInfo-Klasse zwar den Laufwerkstyp angibt, aber nicht den Netzwerkpfad zurückgibt. Vielleicht kann eine der anderen Antworten das liefern.

2voto

Goyuix Punkte 22754

Eine etwas kompaktere Variante der üblichen Antwort:

[System.IO.DriveInfo]("C")

1voto

EBGreen Punkte 35149

Versuchen Sie WMI:

Get-WMI -query "Select ProviderName From Win32_LogicalDisk Where DeviceID='H:'"

1voto

Grant Wagner Punkte 24137

Eine alternative Möglichkeit zur Verwendung von WMI:

get-wmiobject Win32_LogicalDisk | ? {$_.deviceid -eq "s:"} | % {$_.providername}

Alle Netzlaufwerke mit abrufen:

get-wmiobject Win32_LogicalDisk | ? {$_.drivetype -eq 4} | % {$_.providername}

1voto

JaredPar Punkte 699699

Die zuverlässigste Methode ist die Verwendung von WMI

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

Der DriveType ist ein Enum mit den folgenden Werten

0 - Unbekannt 1 - Kein Wurzelverzeichnis 2 - Wechseldatenträger 3 - Lokales Laufwerk 4 - Netzlaufwerk 5 - Kompakter Datenträger 6 - RAM-Disk

Hier ist ein Link zu einem Blogbeitrag von mir zu diesem Thema

0 Stimmen

Das einzige "Problem" mit diesem Ansatz (das scheint viel sauberer) ist, dass ich WINXP laufen, so dass die win32_volume Klasse nicht verfügbar ist! Trotzdem vielen Dank für den Tipp.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X