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 eRegistry
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.exe
parametro 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)