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