In PowerShell, come posso determinare se l'unità corrente è un'unità di rete o no?
-
03-07-2019 - |
Domanda
Devo sapere, dall'interno di Powershell, se l'unità corrente è o meno mappata.
Sfortunatamente, Get-PSDrive non funziona " come previsto " ;:
PS:24 H:\temp
>get-psdrive h
Name Provider Root CurrentLocation
---- -------- ---- ---------------
H FileSystem H:\ temp
ma in MS-Dos " net use " mostra che H: è davvero un'unità di rete mappata:
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK H: \\spma1fp1\JARAVJ$ Microsoft Windows Network
The command completed successfully.
Quello che voglio fare è ottenere il root del drive e mostrarlo nel prompt (vedi: Personalizzazione del prompt di PowerShell - Equivalente a $ M $ P $ _ $ + $ G di CMD? )
Soluzione
Usa il framework .NET:
PS H:\> $x = new-object system.io.driveinfo("h:\")
PS H:\> $x.drivetype
Network
Altri suggerimenti
Prova WMI:
Get-WMI -query "Select ProviderName From Win32_LogicalDisk Where DeviceID='H:'"
Un modo alternativo di usare WMI:
get-wmiobject Win32_LogicalDisk | ? {$ _. deviceid -eq " s: "} | % {$ _. providername}
Ottieni tutte le unità di rete con:
get-wmiobject Win32_LogicalDisk | ? {$ _. drivetype -eq 4} | % {$ _. providername}
Una variazione leggermente più compatta sulla risposta accettata:
[System.IO.DriveInfo]("C")
Fai un ulteriore passo come mostrato di seguito:
([System.IO.DriveInfo]("C")).Drivetype
Nota che funziona solo per il sistema locale. Usa WMI per computer remoti.
Il modo più affidabile è usare WMI
get-wmiobject win32_volume | ? { Il modo più affidabile è usare WMI
<*>
DriveType è un enum con i seguenti valori
0 - Sconosciuto
1 - Nessuna directory principale
2 - Disco rimovibile
3 - Disco locale
4 - Unità di rete
5 - Compact Disk
6 - Disco RAM
Ecco un link a un post sul blog che ho fatto sull'argomento
.DriveType -eq 4 } | % { get-psdrive Il modo più affidabile è usare WMI
<*>
DriveType è un enum con i seguenti valori
0 - Sconosciuto
1 - Nessuna directory principale
2 - Disco rimovibile
3 - Disco locale
4 - Unità di rete
5 - Compact Disk
6 - Disco RAM
Ecco un link a un post sul blog che ho fatto sull'argomento
.DriveLetter[0] }
DriveType è un enum con i seguenti valori
0 - Sconosciuto 1 - Nessuna directory principale 2 - Disco rimovibile 3 - Disco locale 4 - Unità di rete 5 - Compact Disk 6 - Disco RAM
Ecco un link a un post sul blog che ho fatto sull'argomento