about_Profiles
Descrizione breve
Viene descritto come creare e usare un profilo di PowerShell.
Descrizione lunga
È possibile creare un profilo di PowerShell per personalizzare l'ambiente e aggiungere elementi specifici della sessione a ogni sessione di PowerShell avviata.
Un profilo di PowerShell è uno script eseguito all'avvio di PowerShell. È possibile usare il profilo come script di avvio per personalizzare l'ambiente. È possibile aggiungere comandi, alias, funzioni, variabili, moduli, unità di PowerShell e altro ancora. È anche possibile aggiungere altri elementi specifici della sessione al profilo in modo che siano disponibili in ogni sessione senza dover importarli o ricrearli.
PowerShell supporta diversi profili per utenti e programmi host. Tuttavia, non crea automaticamente i profili.
Tipi di profilo e posizioni
PowerShell supporta diversi file di profilo con ambito per gli utenti e gli host di PowerShell. È possibile avere uno o tutti questi profili nel computer.
La console di PowerShell supporta i file di profilo di base seguenti. Questi percorsi di file sono i percorsi predefiniti.
- Tutti gli utenti, tutti gli host
- Windows -
$PSHOME\Profile.ps1
- Linux:
/opt/microsoft/powershell/7/profile.ps1
- macOS:
/usr/local/microsoft/powershell/7/profile.ps1
- Windows -
- Tutti gli utenti, host corrente
- Windows -
$PSHOME\Microsoft.PowerShell_profile.ps1
- Linux:
/opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
- macOS:
/usr/local/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
- Windows -
- Utente corrente, Tutti gli host
- Windows -
$HOME\Documents\PowerShell\Profile.ps1
- Linux:
~/.config/powershell/profile.ps1
- macOS:
~/.config/powershell/profile.ps1
- Windows -
- Utente corrente, Host corrente
- Windows -
$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
- Linux:
~/.config/powershell/Microsoft.PowerShell_profile.ps1
- macOS:
~/.config/powershell/Microsoft.PowerShell_profile.ps1
- Windows -
Nota
In Windows, il percorso della Documents
cartella può essere modificato dal reindirizzamento delle cartelle o da OneDrive. Non è consigliabile reindirizzare la Documents
cartella a una condivisione di rete o includerla in OneDrive. Il reindirizzamento della cartella può causare il mancato caricamento dei moduli e la creazione di errori negli script del profilo.
Per informazioni sulla rimozione della Documents
cartella dalla gestione di OneDrive, vedere la documentazione di OneDrive.
Gli script del profilo vengono eseguiti nell'ordine elencato. Ciò significa che le modifiche apportate nel profilo AllUsersAllHosts possono essere sostituite da qualsiasi altro script del profilo. Il profilo CurrentUserCurrentHost viene sempre eseguito per ultimo. Nella Guida di PowerShell il profilo CurrentUserCurrentHost è il profilo più spesso definito profilo di PowerShell.
Altri programmi che ospitano PowerShell possono supportare i propri profili. Ad esempio, Visual Studio Code (VS Code) supporta i profili specifici dell'host seguenti.
- Tutti gli utenti, Host corrente -
$PSHOME\Microsoft.VSCode_profile.ps1
- Utente corrente, Host corrente -
$HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1
I percorsi del profilo includono le variabili seguenti:
- La
$PSHOME
variabile archivia la directory di installazione per PowerShell - La
$HOME
variabile archivia la home directory dell'utente corrente
Variabile $PROFILE
La $PROFILE
variabile automatica archivia i percorsi dei profili di PowerShell disponibili nella sessione corrente.
Per visualizzare un percorso del profilo, visualizzare il valore della $PROFILE
variabile. È anche possibile usare la $PROFILE
variabile in un comando per rappresentare un percorso.
La $PROFILE
variabile archivia il percorso del profilo "Current User, Current Host". Gli altri profili vengono salvati nelle proprietà note della $PROFILE
variabile.
Ad esempio, la $PROFILE
variabile ha i valori seguenti nella console di Windows PowerShell.
- Utente corrente, host corrente -
$PROFILE
- Utente corrente, host corrente -
$PROFILE.CurrentUserCurrentHost
- Utente corrente, Tutti gli host -
$PROFILE.CurrentUserAllHosts
- Tutti gli utenti, host corrente -
$PROFILE.AllUsersCurrentHost
- Tutti gli utenti, tutti gli host -
$PROFILE.AllUsersAllHosts
Poiché i valori della $PROFILE
variabile cambiano per ogni utente e in ogni applicazione host, assicurarsi di visualizzare i valori delle variabili di profilo in ogni applicazione host di PowerShell usata.
Per visualizzare i valori correnti della $PROFILE
variabile, digitare:
$PROFILE | Select-Object *
È possibile usare la $PROFILE
variabile in molti comandi. Ad esempio, il comando seguente apre il profilo "Utente corrente, Host corrente" nel Blocco note:
notepad $PROFILE
Il comando seguente determina se è stato creato un profilo "Tutti gli utenti, tutti gli host" nel computer locale:
Test-Path -Path $PROFILE.AllUsersAllHosts
Come creare un profilo
Per creare un profilo di PowerShell, usare il formato di comando seguente:
if (!(Test-Path -Path <profile-name>)) {
New-Item -ItemType File -Path <profile-name> -Force
}
Ad esempio, per creare un profilo per l'utente corrente nell'applicazione host di PowerShell corrente, usare il comando seguente:
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
In questo comando, l'istruzione if
impedisce di sovrascrivere un profilo esistente. Sostituire il valore della $PROFILE
variabile con il percorso del file di profilo che si desidera creare.
Nota
Per creare profili "Tutti gli utenti" in Windows Vista e versioni successive di Windows, avviare PowerShell con l'opzione Esegui come amministratore .
Come modificare un profilo
È possibile aprire qualsiasi profilo di PowerShell in un editor di testo, ad esempio Blocco note.
Per aprire il profilo dell'utente corrente nell'applicazione host powerShell corrente nel Blocco note, digitare:
notepad $PROFILE
Per aprire altri profili, specificare il nome del profilo. Ad esempio, per aprire il profilo per tutti gli utenti di tutte le applicazioni host, digitare:
notepad $PROFILE.AllUsersAllHosts
Per applicare le modifiche, salvare il file del profilo e quindi riavviare PowerShell.
Come scegliere un profilo
Se si usano più applicazioni host, inserire gli elementi usati in tutte le applicazioni host nel $PROFILE.CurrentUserAllHosts
profilo. Inserire elementi specifici di un'applicazione host, ad esempio un comando che imposta il colore di sfondo per un'applicazione host, in un profilo specifico dell'applicazione host.
Se si è un amministratore che sta personalizzando PowerShell per molti utenti, seguire queste linee guida:
- Archiviare gli elementi comuni nel
$PROFILE.AllUsersAllHosts
profilo - Archiviare elementi specifici di un'applicazione host nei
$PROFILE.AllUsersCurrentHost
profili specifici dell'applicazione host - Archiviare elementi per utenti specifici nei profili specifici dell'utente
Assicurarsi di controllare la documentazione dell'applicazione host per eventuali implementazioni speciali dei profili di PowerShell.
Come usare un profilo
Molti degli elementi creati in PowerShell e la maggior parte dei comandi eseguiti influiscono solo sulla sessione corrente. Quando si termina la sessione, gli elementi vengono eliminati.
I comandi e gli elementi specifici della sessione includono variabili di PowerShell, variabili di ambiente, alias, funzioni, comandi e moduli di PowerShell aggiunti alla sessione.
Per salvare questi elementi e renderli disponibili in tutte le sessioni future, aggiungerli a un profilo di PowerShell.
Un altro uso comune per i profili consiste nel salvare funzioni, alias e variabili usate di frequente. Quando si salvano gli elementi in un profilo, è possibile usarli in qualsiasi sessione applicabile senza ricrearli.
Come avviare un profilo
Quando si apre il file del profilo, il file è vuoto. Tuttavia, è possibile riempirlo con le variabili, gli alias e i comandi usati di frequente.
Ecco alcuni suggerimenti per iniziare.
Aggiungere una funzione che elenca gli alias per qualsiasi cmdlet
function Get-CmdletAlias ($cmdletname) {
Get-Alias |
Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
Format-Table -Property Definition, Name -AutoSize
}
Personalizzare la console
function CustomizeConsole {
$hosttime = (Get-ChildItem -Path $PSHOME\pwsh.exe).CreationTime
$hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
$Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
Clear-Host
}
CustomizeConsole
Aggiungere un prompt personalizzato di PowerShell
function Prompt {
$env:COMPUTERNAME + "\" + (Get-Location) + "> "
}
Per altre informazioni sul prompt di PowerShell, vedere about_Prompts.
Per altri esempi di profilo, vedere Personalizzazione dell'ambiente shell.
Parametro NoProfile
Per avviare PowerShell senza profili, usare il parametro NoProfile di pwsh.exe
, il programma che avvia PowerShell.
Per iniziare, aprire un programma in grado di avviare PowerShell, ad esempio Cmd.exe o PowerShell stesso. È anche possibile usare la finestra di dialogo Esegui in Windows.
Tipo:
pwsh -NoProfile
Per un elenco completo dei parametri di pwsh.exe
, tipo:
pwsh -?
Profili e criteri di esecuzione
I criteri di esecuzione di PowerShell determinano, in parte, se è possibile eseguire script e caricare i file di configurazione, inclusi i profili. Il criterio di esecuzione con restrizioni è l'impostazione predefinita. Impedisce l'esecuzione di tutti gli script, inclusi i profili. Se si usa il criterio "Con restrizioni", il profilo non viene eseguito e il relativo contenuto non viene applicato.
Un Set-ExecutionPolicy
comando imposta e modifica i criteri di esecuzione. è uno dei pochi comandi che si applica in tutte le sessioni di PowerShell perché il valore viene salvato nel Registro di sistema. Non è necessario impostarlo quando si apre la console e non è necessario archiviare un Set-ExecutionPolicy
comando nel profilo.
Profili e sessioni remote
I profili di PowerShell non vengono eseguiti automaticamente nelle sessioni remote, quindi i comandi aggiunti dai profili non sono presenti nella sessione remota. Inoltre, la $PROFILE
variabile automatica non viene popolata nelle sessioni remote.
Per eseguire un profilo in una sessione, usare il cmdlet Invoke-Command .
Ad esempio, il comando seguente esegue il profilo "Utente corrente, Host corrente" dal computer locale nella sessione in $s
.
Invoke-Command -Session $s -FilePath $PROFILE
Il comando seguente esegue il profilo "Utente corrente, Host corrente" dal computer remoto nella sessione in $s
. Poiché la $PROFILE
variabile non viene popolata, il comando usa il percorso esplicito del profilo. Si usa l'operatore dot sourcing in modo che il profilo venga eseguito nell'ambito corrente nel computer remoto e non nel proprio ambito.
Invoke-Command -Session $s -ScriptBlock {
. "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}
Dopo aver eseguito questo comando, i comandi aggiunti dal profilo alla sessione sono disponibili in $s
.