2008-10-01 22 views
1

Dans PowerShell, même s'il est possible de savoir si un lecteur est un lecteur réseau: voir In PowerShell, how can I determine if the current drive is a networked drive or not?Dans PowerShell, comment puis-je déterminer la racine d'un lecteur (en supposant qu'il est un lecteur réseau)

Lorsque je tente d'obtenir la "racine" du lecteur, je récupère la lettre de lecteur.

La configuration: MS-Dos "L'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. 

Get-PSDrive nous dit que la racine est H:

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

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

et l'utilisation system.io.driveinfo ne nous donne pas une réponse complète:

PS:13 H:\ 
>$x = new-object system.io.driveinfo("h:\") 
PS:14 H:\ 
>$x.DriveType 
Network 
PS:15 H:\ 
>$x.RootDirectory 

Mode    LastWriteTime  Length Name 
----    -------------  ------ ---- 
d----  29/09/2008  16:45   h:\ 

Toute idée de comment ge t cette info?

Merci

Répondre

0

Essayez WMI:

Get-WMIObject -query "Select ProviderName From Win32_LogicalDisk Where DeviceID='H:'" 
+0

Un nit mineur, il est Get-WMIObject au lieu de Get-WMI :) – JJarava

+0

yup. Je vais éditer. En fait, j'ai utilisé l'alias gwmi pour le désaliaser et ne l'a que partiellement réussi. – EBGreen

0

lecteur $ = gwmi Win32_LogicalDisk -filter "DeviceID = 'H:'" if ($ drive.DriveType eq 4) {write-host " disque est un partage réseau "}

0

$ FSO = new-objet -com "Scripting.FileSystemObject" fso.GetDrive $ (" Y »). ShareName

3

l'astuce est que le au Le nom de l'hommage est différent de celui attendu. Essayez:

(Get-PSDrive h).DisplayRoot