Un'unità di Windows PowerShell è un archivio dati a cui è possibile accedere come a un'unità di file system. I provider di Windows PowerShell creano automaticamente alcune unità, ad esempio le unità file system (inclusi C: e D:), le unità del Registro di sistema (HKCU: e HKLM:) e l'unità dei certificati (Cert:). Inoltre è possibile creare proprie unità di Windows PowerShell. Tali unità sono molto utili ma sono disponibili solo in Windows PowerShell. Non vi si può accedere utilizzando altri strumenti di Windows, ad esempio Esplora risorse o Cmd.exe.

Per i comandi che utilizzano le unità di Windows PowerShell viene utilizzato il sostantivo PSDrive. Per visualizzare l'elenco delle unità di Windows PowerShell disponibili nella sessione di Windows PowerShell, utilizzare il 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

Sebbene le unità visualizzate si differenzino dalle unità del sistema, l'elenco sarà simile all'output del comando Get-PSDrive mostrato sopra.

Le unità file system sono un sottoinsieme delle unità di Windows PowerShell. È possibile identificare le unità file system grazie alla voce FileSystem nella colonna Provider. Le unità file system in Windows PowerShell sono supportate dal provider FileSystem di Windows PowerShell.

Per visualizzare la sintassi del cmdlet Get-PSDrive, digitare un comando Get-Command con il parametro 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>] 

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

PS> 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 Windows PowerShell che rappresentano gli hive del Registro di sistema, utilizzare il parametro PSProvider per visualizzare unicamente le unità di Windows PowerShell supportate dal provider Registry di Windows PowerShell:

PS> Get-PSDrive -PSProvider Registry

Name Provider Root CurrentLocation

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

HKCU Registry HKEY_CURRENT_USER

HKLM Registry HKEY_LOCAL_MACHINE

Inoltre è possibile utilizzare i cmdlet Location standard con le unità di Windows PowerShell:

PS> Set-Location HKLM:\SOFTWARE

PS> Push-Location .\Microsoft

PS> Get-Location

Path

----

HKLM:\SOFTWARE\Microsoft

Aggiunta di nuove unità di Windows PowerShell (New-PSDrive)

È possibile aggiungere unità di Windows PowerShell personalizzate utilizzando il comando New-PSDrive. Per conoscere la sintassi del comando New-PSDrive, immettere il comando Get-Command con il parametro 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]

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

  • Il nome dell'unità (è possibile utilizzare qualsiasi nome valido in Windows PowerShell)

  • Il provider mediante il parametro PSProvider (utilizzare "FileSystem" per i percorsi di 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 applicazioni di Microsoft Office nel computer, ad esempio C:\Program Files\Microsoft Office\OFFICE11. Per creare l'unità, digitare il comando seguente:

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...
Nota

In genere nei percorsi non viene fatta distinzione fra maiuscole e minuscole.

Per fare riferimento alla nuova unità di Windows PowerShell utilizzare il nome seguito dai due punti (:), come per tutte le unità di Windows PowerShell.

Un'unità di Windows PowerShell può rendere molto più facili molte attività. Ad esempio, alcune delle chiavi più importanti del Registro di sistema di Windows hanno percorsi assai lunghi, la qual cosa ne rende difficile l'accesso e la memorizzazione. Le informazioni di configurazione essenziali si trovano in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion. Per visualizzare e modificare gli elementi della chiave CurrentVersion del Registro di sistema, è possibile creare un'unità di Windows PowerShell la cui radice sia tale chiave, 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\...

È quindi possibile cambiare il percorso impostandolo sull'unità cvkey: come per qualsiasi altra unità:

PS> cd cvkey:

oppure:

PS> Set-Location cvkey: -PassThru

Path

----

cvkey:\

Il cmdlet New-PsDrive aggiunge la nuova unità solo alla sessione corrente di Windows PowerShell. Se si chiude la finestra di Windows PowerShell, la nuova unità viene persa. Per salvare un'unità di Windows PowerShell, utilizzare il cmdlet Export-Console per esportare la sessione di Windows PowerShell corrente, quindi utilizzare il parametro PSConsoleFile di PowerShell.exe per importarla. In alternativa è possibile aggiungere la nuova unità al profilo di Windows PowerShell.

Eliminazione di unità di Windows PowerShell (Remove-PSDrive)

È possibile eliminare le unità da Windows PowerShell utilizzando Remove-PSDrive, un cmdlet facile da utilizzare. Per eliminare una specifica unità di Windows PowerShell, è sufficiente fornirne il nome.

Se ad esempio è stata aggiunta l'unità Office: di Windows PowerShell, come illustrato nell'argomento New-PSDrive, è possibile eliminarla digitando:

PS> Remove-PSDrive -Name Office

Per eliminare l'unità cvkey: di Windows PowerShell, anch'essa illustrata nell'argomento New-PSDrive, utilizzare il comando seguente:

PS> Remove-PSDrive -Name cvkey

È facile eliminare un'unità da Windows PowerShell, tuttavia non è possibile farlo mentre ci si trova all'interno di essa. Ad esempio:

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

Aggiunta e rimozione delle unità dall'esterno di Windows PowerShell

Windows PowerShell rileva le unità di file system aggiunte o rimosse in Windows, incluse le unità di rete mappate, le unità USB collegate e le unità eliminate tramite il comando net use o i metodi WScript.Network, MapNetworkDrive e RemoveNetworkDrive contenuti in uno script WSH (Windows Script Host).




Argomenti della Guida