Gestione delle unità di PowerShell

Questo esempio si applica solo alle piattaforme Windows.

Un'unità di PowerShell è un percorso di archivio dati accessibile come un'unità file system in PowerShell. I provider di PowerShell creano automaticamente alcune unità, ad esempio le unità del file system (incluso C: e D:), le unità del Registro di sistema (HKCU: e HKLM:) e l'unità certificato (Cert:) ed è possibile creare unità PowerShell personalizzate. Queste unità sono utili, ma sono disponibili solo in PowerShell. Non è possibile accedervi usando altri strumenti di Windows, ad esempio Esplora file o Cmd.exe.

PowerShell usa il sostantivo PSDrive per i comandi che funzionano con le unità di PowerShell. Per un elenco delle unità di PowerShell nella sessione di PowerShell, usare il Get-PSDrive cmdlet .

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

Anche se le unità nella visualizzazione variano con le unità del sistema, le unità dovrebbero essere simili all'output del Get-PSDrive comando illustrato in precedenza.

le unità del file system sono un subset delle unità di PowerShell. È possibile identificare le unità del file system dalla voce FileSystem nella colonna Provider. Le unità del file system in PowerShell sono supportate dal provider FileSystem di PowerShell.

Per visualizzare la sintassi del Get-PSDrive cmdlet, digitare un Get-Command comando con il parametro Syntax :

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>]

Il parametro PSProvider consente di visualizzare solo le unità di PowerShell supportate da un provider specifico. Ad esempio, per visualizzare solo le unità di PowerShell supportate dal provider FileSystem di PowerShell, digitare un Get-PSDrive comando con il parametro PSProvider e il valore FileSystem :

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

Per visualizzare le unità di PowerShell che rappresentano hive del Registro di sistema, usare il parametro PSProvider per visualizzare solo le unità di PowerShell supportate dal provider del Registro di sistema di PowerShell:

Get-PSDrive -PSProvider Registry
Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
HKCU       Registry      HKEY_CURRENT_USER
HKLM       Registry      HKEY_LOCAL_MACHINE

È anche possibile usare i cmdlet Location standard con le unità di PowerShell:

Set-Location HKLM:\SOFTWARE
Push-Location .\Microsoft
Get-Location
Path
----
HKLM:\SOFTWARE\Microsoft

Aggiunta di nuove unità di PowerShell

È possibile aggiungere unità di PowerShell personalizzate usando il New-PSDrive comando . Per ottenere la sintassi per il New-PSDrive comando, immettere il Get-Command comando con il parametro Syntax :

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

Per creare una nuova unità di PowerShell, è necessario specificare tre parametri:

  • Un nome per l'unità (è possibile usare qualsiasi nome di PowerShell valido)
  • PSProvider: usare FileSystem per i percorsi del file system e Registry per i percorsi del Registro di sistema
  • La radice, ossia il percorso della radice della nuova unità

Ad esempio, è possibile creare un'unità denominata Office mappata alla cartella contenente le app Office licazioni Microsoft nel computer, ad esempio C:\Program Files\MicrosoftOffice\OFFICE11. Per creare l'unità, digitare il comando seguente:

New-PSDrive -Name Office -PSProvider FileSystem -Root "C:\Program Files\Microsoft Office\OFFICE11"
Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
Office     FileSystem    C:\Program Files\Microsoft Offic...

Nota

In generale, i percorsi non fanno distinzione tra maiuscole e minuscole.

È possibile accedere a un'unità Di PowerShell usando il nome seguito da due punti (:).

Un'unità di PowerShell può rendere molte attività molto più semplici. Ad esempio, alcune delle chiavi più importanti del Registro di sistema hanno percorsi estremamente lunghi, che sono complicati da accedere e difficili da ricordare. Le informazioni di configurazione critiche si trovano in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion. Per visualizzare e modificare gli elementi nella chiave del Registro di sistema CurrentVersion, è possibile creare un'unità di PowerShell radicata in tale chiave digitando:

New-PSDrive -Name cvkey -PSProvider Registry -Root HKLM\Software\Microsoft\Windows\CurrentVersion
Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
cvkey      Registry      HKLM\Software\Microsoft\Windows\...

È quindi possibile passare all'unità cvkey: come si farebbe per qualsiasi altra unità:

cd cvkey:

oppure:

Set-Location cvkey: -PassThru
Path
----
cvkey:\

Il New-PSDrive cmdlet aggiunge la nuova unità solo alla sessione di PowerShell corrente. Se si chiude la finestra di PowerShell, la nuova unità viene persa. Per salvare un'unità di PowerShell, usare il Export-Console cmdlet per esportare la sessione di PowerShell corrente e quindi usare il PowerShell.exeparametro PSConsoleFile per importarlo. In alternativa, aggiungere la nuova unità nel proprio profilo Windows PowerShell.

Eliminazione delle unità di PowerShell

È possibile eliminare le unità da PowerShell usando il Remove-PSDrive cmdlet . Ad esempio, se è stata aggiunta l'unità Office: PowerShell, come illustrato nell'argomento New-PSDrive , è possibile eliminarla digitando:

Remove-PSDrive -Name Office

Per eliminare l'unità cvkey: di PowerShell, usare il comando seguente:

Remove-PSDrive -Name cvkey

Tuttavia, non è possibile eliminarlo mentre si è nell'unità. Ad esempio:

cd 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

Aggiunta e rimozione di unità all'esterno di PowerShell

PowerShell rileva le unità del file system aggiunte o rimosse in Windows, tra cui:

  • unità di rete mappate
  • Unità USB collegate
  • Unità eliminate usando il net use comando o da uno script WSH (Windows Script Host)