Uma unidade do Windows PowerShell é um local de repositório de dados que pode ser acessado como uma unidade de sistema de arquivos no Windows PowerShell. Os provedores do Windows PowerShell criam algumas unidades para você, como as unidades do sistema de arquivos (incluindo C: e D:), as unidades do Registro (HKCU: e HKLM:), e a unidade de certificado (Cert:); você pode criar suas próprias unidades do Windows PowerShell. Essas unidades são muito úteis, mas estão disponíveis somente no Windows PowerShell. Você não pode acessá-las usando outras ferramentas do Windows, como o Windows Explorer ou o Cmd.exe.

O Windows PowerShell utiliza o termo PSDrive para comandos que funcionam em suas unidades. Para obter uma lista das unidades do Windows PowerShell na sessão, utilize o cmdlet Get-PSDrive.

PS> Get-PSDrive

Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
A          FileSystem    A:\
Alias      Alias
C          FileSystem    C:\                                 ...And Settings\me
cert       Certificate   \
D          FileSystem    D:\
Env        Environment
Function   Function
HKCU       Registry      HKEY_CURRENT_USER
HKLM       Registry      HKEY_LOCAL_MACHINE
Variable   Variable

Embora as unidades exibidas sejam diferentes das unidades do sistema, a listagem será similar à saída do comando Get-PSDrive mostrada anteriormente.

As unidades do sistema de arquivos são um subconjunto das unidades do Windows PowerShell. Você pode identificar as unidades do sistema de arquivos pela entrada FileSystem na coluna Provider (as unidades do sistema de arquivos no Windows PowerShell com suporte do provedor FileSystem do Windows PowerShell).

Para ver a sintaxe do cmdlet Get-PSDrive, digite um comando Get-Command com o parâmetro Syntax:

PS> Get-Command -Name Get-PSDrive -Syntax
Get-PSDrive [[-Name] <String[]>] [-Scope <String>] [-PSProvider <String[]>] [-V
erbose] [-Debug] [-ErrorAction <ActionPreference>] [-ErrorVariable <String>] [-
OutVariable <String>] [-OutBuffer <Int32>] 

O parâmetro PSProvider permite que você exiba somente as unidades do Windows PowerShell com suporte de um provedor específico. Por exemplo, para exibir somente as unidades do Windows PowerShell com suporte do provedor FileSystem, digite um comando Get-PSDrive com o parâmetro PSProvider e o valor FileSystem:

PS> Get-PSDrive -PSProvider FileSystem

Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
A          FileSystem    A:\
C          FileSystem    C:\                           ...nd Settings\PowerUser
D          FileSystem    D:\

Para exibir as unidades do Windows PowerShell que representam hives do Registro, utilize o parâmetro PSProvider para exibir somente as unidades com suporte do provedor Registry:

PS> Get-PSDrive -PSProvider Registry

Name Provider Root CurrentLocation

---- -------- ---- ---------------

HKCU Registry HKEY_CURRENT_USER

HKLM Registry HKEY_LOCAL_MACHINE

Você também pode usar os cmdlets Location padrão com as unidades do Windows PowerShell:

PS> Set-Location HKLM:\SOFTWARE

PS> Push-Location .\Microsoft

PS> Get-Location

Path

----

HKLM:\SOFTWARE\Microsoft

Adicionando novas unidades do Windows PowerShell (New-PSDrive)

Você pode adicionar suas próprias unidades do Windows PowerShell usando o comando New-PSDrive. Para obter a sintaxe do comando New-PSDrive, digite o comando Get-Command com o parâmetro Syntax:

PS> Get-Command -Name New-PSDrive -Syntax
New-PSDrive [-Name] <String> [-PSProvider] <String> [-Root] <String> [-Descript
ion <String>] [-Scope <String>] [-Credential <PSCredential>] [-Verbose] [-Debug
] [-ErrorAction <ActionPreference>] [-ErrorVariable <String>] [-OutVariable <St
ring>] [-OutBuffer <Int32>] [-WhatIf] [-Confirm]

Para criar uma nova unidade do Windows PowerShell, você deve fornecer três parâmetros:

  • Um nome para a sua unidade (você pode utilizar qualquer nome válido do Windows PowerShell)

  • O PSProvider (use "FileSystem" para locais no sistema de arquivos e "Registry" para locais no Registro)

  • A raiz, ou seja, o caminho até a raiz da nova unidade

Por exemplo, você pode criar uma unidade chamada "Office" que seja mapeada para a pasta que contém os aplicativos do Microsoft Office em seu computador; por exemplo, C:\Program Files\Microsoft Office\OFFICE11: Para criar a unidade, digite o seguinte comando:

PS> New-PSDrive -Name Office -PSProvider FileSystem -Root "C:\Program Files\Micr
osoft Office\OFFICE11"

Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
Office     FileSystem    C:\Program Files\Microsoft Offic...
Observação:

Em geral, os caminhos não diferenciam maiúsculas de minúsculas.

Você pode se referir à nova unidade do Windows PowerShell como o faria com todas as outras unidades desse aplicativo, com o nome seguido de dois pontos (:).

Uma unidade do Windows PowerShell pode simplificar muitas tarefas. Por exemplo, algumas das chaves mais importantes do Registro do Windows possuem caminhos extremamente longos, tornando o acesso incômodo e difícil de decorar. As informações de configuração críticas residem abaixo de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion. Para visualizar e alterar itens na chave do Registro CurrentVersion, você pode criar uma unidade do Windows PowerShell que tenha sua raiz nessa chave, digitando:

PS> New-PSDrive -Name cvkey -PSProvider Registry -Root HKLM\Software\Microsoft\W

indows\CurrentVersion

Name Provider Root CurrentLocation

---- -------- ---- ---------------

cvkey Registry HKLM\Software\Microsoft\Windows\...

Em seguida, você pode alterar o local para a unidade cvkey: como faria com qualquer outra unidade:

PS> cd cvkey:

ou:

PS> Set-Location cvkey: -PassThru

Path

----

cvkey:\

O cmdlet New-PsDrive adiciona a nova unidade somente à sessão atual do Windows PowerShell. Se você fechar a janela do Windows PowerShell, a nova unidade será perdida. Para salvá-la, use o cmdlet Export-Console para exportar a sessão atual do Windows PowerShell e, em seguida, use o parâmetro PSConsoleFile do PowerShell.exe para importá-la. Ou adicione a nova unidade ao seu perfil do Windows PowerShell.

Excluindo unidades do Windows PowerShell (Remove-PSDrive)

Você pode excluir unidades do Windows PowerShell usando o cmdlet Remove-PSDrive. O cmdlet Remove-PSDrive é fácil de usar; para excluir uma unidade específica do Windows PowerShell, basta fornecer o nome da unidade desse aplicativo.

Por exemplo, se você adicionou a unidade do Windows PowerShell Office:, conforme mostrado no tópico New-PSDrive, poderá excluí-la digitando:

PS> Remove-PSDrive -Name Office

Para excluir a unidade do Windows PowerShell cvkey:, também mostrada no tópico New-PSDrive, utilize o seguinte comando:

PS> Remove-PSDrive -Name cvkey

É fácil excluir uma unidade do Windows PowerShell, mas você não poderá excluí-la enquanto estiver dentro dela. Por exemplo:

PS> cd office:
PS Office:\> remove-psdrive -name office
Remove-PSDrive : Cannot remove drive 'Office' because it is in use.
At line:1 char:15
+ remove-psdrive  <<<< -name office

Adicionando e removendo unidades de fora do Windows PowerShell

O Windows PowerShell detecta unidades do sistema de arquivos adicionadas ou removidas no Windows, incluindo as unidades de rede mapeadas, as unidades USB anexadas e as unidades excluídas através do comando net use ou dos métodos WScript.Network MapNetworkDrive e RemoveNetworkDrive de um script WHS (Windows Script Host).




Sumário