Dans PowerShell, comment puis-je déterminer si le lecteur actuel est un lecteur en réseau ou non?
-
03-07-2019 - |
Question
J'ai besoin de savoir depuis Powershell si le lecteur actuel est un lecteur mappé ou non.
Malheureusement, Get-PSDrive ne fonctionne pas "comme prévu":
PS:24 H:\temp
>get-psdrive h
Name Provider Root CurrentLocation
---- -------- ---- ---------------
H FileSystem H:\ temp
mais dans MS-Dos "utilisation nette" montre que H: est vraiment un lecteur réseau mappé:
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK H: \\spma1fp1\JARAVJ$ Microsoft Windows Network
The command completed successfully.
Ce que je veux faire, c'est récupérer la racine du lecteur et l'afficher dans l'invite (voir: Personnalisation de l’invite PowerShell - Équivalent à CMD $ M $ P $ _ $ + $ G? )
La solution
Utilisez le framework .NET:
PS H:\> $x = new-object system.io.driveinfo("h:\")
PS H:\> $x.drivetype
Network
Autres conseils
Essayez WMI:
Get-WMI -query "Select ProviderName From Win32_LogicalDisk Where DeviceID='H:'"
Une autre façon d'utiliser WMI:
get-wmiobject Win32_LogicalDisk | ? {$ _. deviceid -eq "" s:"} | % {$ _. providername}
Obtenez tous les lecteurs réseau avec:
get-wmiobject Win32_LogicalDisk | ? {$ _. drivetype -eq 4} | % {$ _. providername}
Une variante légèrement plus compacte de la réponse acceptée:
[System.IO.DriveInfo]("C")
Allez plus loin, comme indiqué ci-dessous:
([System.IO.DriveInfo]("C")).Drivetype
Notez que cela ne fonctionne que pour le système local. Utilisez WMI pour les ordinateurs distants.
La méthode la plus fiable consiste à utiliser WMI
get-wmiobject win32_volume | ? { La méthode la plus fiable consiste à utiliser WMI
<*>
Le DriveType est une énumération avec les valeurs suivantes
0 - Inconnu
1 - Pas de répertoire racine
2 - Disque amovible
3 - Disque local
4 - Lecteur réseau
5 - Disque compact
6 - Disque RAM
Voici un lien vers un article de blog que j'ai publié sur le sujet
.DriveType -eq 4 } | % { get-psdrive La méthode la plus fiable consiste à utiliser WMI
<*>
Le DriveType est une énumération avec les valeurs suivantes
0 - Inconnu
1 - Pas de répertoire racine
2 - Disque amovible
3 - Disque local
4 - Lecteur réseau
5 - Disque compact
6 - Disque RAM
Voici un lien vers un article de blog que j'ai publié sur le sujet
.DriveLetter[0] }
Le DriveType est une énumération avec les valeurs suivantes
0 - Inconnu 1 - Pas de répertoire racine 2 - Disque amovible 3 - Disque local 4 - Lecteur réseau 5 - Disque compact 6 - Disque RAM
Voici un lien vers un article de blog que j'ai publié sur le sujet