Pergunta

Eu preciso saber, de dentro do PowerShell, se a unidade atual é uma unidade mapeada ou não.

Infelizmente, Get-PSDrive não está funcionando "como esperado":

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

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

mas em MS-DOS mostra "uso" líquido que H: é realmente uma unidade de rede mapeada:

New connections will be remembered.

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

The command completed successfully.

O que eu quero fazer é obter a raiz da unidade e mostrá-la no prompt (ver: Personalização PowerShell Prompt -? equivalente a do CMD $ M $ P $ _ $ + $ G )

Foi útil?

Solução

Use o .NET framework:

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

Outras dicas

Tente WMI:

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

Uma forma alternativa de usar WMI:

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

Obter todas as unidades de rede com:

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

Uma variação ligeiramente mais compacto na resposta aceita:

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

Tome este mais um passo, como mostrado abaixo:

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

Note que este só funciona para o sistema local. Use WMI para computadores remotos.

A maneira mais confiável é usar WMI

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

O DriveType é um ENUM sagacidade hthe seguintes valores

0 - Desconhecido 1 - Diretório Raiz Não 2 - Disco Removível 3 - Disco Local 4 - Unidade de Rede 5 - Disco Compacto 6 - RAM Disk

Aqui está um link para um post que fiz sobre o assunto

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top