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
  • 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
  • Utente corrente, Tutti gli host
    • Windows - $HOME\Documents\PowerShell\Profile.ps1
    • Linux: ~/.config/powershell/profile.ps1
    • macOS: ~/.config/powershell/profile.ps1
  • 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

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" in 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 di PowerShell corrente in 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.

Vedi anche