In questo tutorial vedremo i PowerShell Profiles e il loro utilizzo. I profili PowerShell ti aiutano a personalizzare il tuo ambiente e ad aggiungere elementi per ogni sessione PowerShell che inizi. Il profilo PowerShell è uno script che viene eseguito ogni volta che si avvia PowerShell. Sei in grado di utilizzare un profilo PowerShell come script di accesso per personalizzare l’ambiente. Usando un profilo PowerShell, puoi aggiungere comandi, alias, funzioni, variabili, snap-in, moduli, PSDrive e qualsiasi altro elemento specifico per le sessioni nel tuo evnironmet. Non dovrai importarli o ricrearli ogni volta che esegui PowerShell. Saranno caricati automaticamente. PowerShell supporta diversi profili per utenti e programmi host. PowerShell non crea alcun profilo per te.
Se vuoi comandi specifici della sessione, variabili, variabili di preferenza, alias, funzioni, comandi (tranne Set-ExecutionPolicy), e moduli PowerShell che usi frequentemente, puoi usare profili da caricare in tutte le sessioni future.
File di profilo
La console PowerShell supporta i seguenti profili:
-
$Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
– Utente corrente, Host corrente -
$Home\Documents\PowerShell\Profile.ps1
– Utente corrente, tutti gli host -
$PsHome\Microsoft.PowerShell_profile.ps1
– Tutti gli utenti, Host corrente -
$PsHome\Profile.ps1
– Tutti gli utenti, tutti gli host
I profili sopra sono mostrati in ordine di precedenza. Il primo profilo nella lista ha l’ordine di precedenza più alto. Come puoi vedere nei profili sopra, abbiamo due variabili. Le variabili $PSHome
e $Home
presentano i seguenti valori.
-
$PSHome
– Memorizza la directory di installazione per PowerShell -
$Home
– Memorizza la home directory dell’utente corrente
Altri programmi che ospitano PowerShell possono supportare i propri profili. PowerShell Integrated Scripting Environment (ISE) supporta i seguenti profili specifici dell’host.
-
$Home\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
– Utente corrente, Host corrente -
$PsHome\Microsoft.PowerShellISE_profile.ps1
– Tutti gli utenti, Host corrente
Come da Microsoft, nella Guida di PowerShell, il profilo “CurrentUser, Host corrente” è il profilo più spesso indicato come “il tuo profilo PowerShell”.
Variabile di profilo
In PowerShell abbiamo una variabile automatica chiamata $Profile
. Tutti i percorsi del profilo PowerShell che sono disponibili nella sessione corrente sono memorizzati nella variabile $Profile
. Visualizzando la variabile $Profile
, vedrai il percorso del profilo.
La variabile $Profile
memorizza il percorso del profilo “Current User, Current Host”. Gli altri profili sono salvati nelle proprietà delle note della variabile $Profile
.
È possibile specificare un profilo utilizzando le proprietà della variabile. In Windows PowerShell Console, abbiamo i seguenti valori nella variabile $Profile
.
-
$Profile
– Utente corrente, host corrente -
$Profile.CurrentUserCurrentHost
– Utente corrente, host corrente -
$Profile.CurrentUserAllHosts
– Utente corrente, tutti gli host -
$Profile.AllUsersCurrentHost
– Tutti gli utenti, host corrente -
$Profile.AllUsersAllHosts
– Tutti gli utenti, tutti gli host
È possibile utilizzare la variabile $Profile
nei comandi.
Codice:
Test-Path -Path $PROFILETest-Path -Path $PROFILE.CurrentUserCurrentHostTest-Path -Path $PROFILE.CurrentUserAllHostsTest-Path -Path $PROFILE.AllUsersCurrentHostTest-Path -Path $PROFILE.AllUsersAllHosts
Output:
I comandi precedenti verificano se il profilo specificato è stato creato. Come potete vedere la risposta è false per tutti loro. Come abbiamo detto prima, i profili non sono creati di default. Dovrai crearli.
Crea un profilo
Per creare un profilo devi usare il seguente comando.
Codice:
New-Item -ItemType File -Path $profile -Force
Il comando precedente creerà un profilo per “Current User, Current Host”.
Nota che quanto sopra sostituirà qualsiasi profilo esistente. Se vuoi assicurarti di non sostituire alcun profilo già esistente e perdere le modifiche che hai già applicato, puoi provare il seguente.
Codice:
if (-not (Test-Path -Path $profile.AllUsersAllHosts)){ New-Item -ItemType File -Path $profile.AllUsersAllHosts -Force}
Il comando di cui sopra controllerà se esiste un profilo per “Tutti gli utenti, tutti gli host” e se non esiste creerà il profilo.
Per creare un profilo è necessario eseguire la console PowerShell come amministratore. Questo vale a partire da Windows Vista e versioni successive.
Modificare un profilo
Se un profilo esiste e avete bisogno di applicare alcune modifiche o aggiunte, è necessario utilizzare un editor di testo per modificare il profilo. Usando il blocco note è un modo semplice per modificare il profilo.
Codice:
notepad $profile
Come puoi vedere qui sotto il mio profilo attuale è configurato per fornire un messaggio di benvenuto quando apro la mia console.
Ora userò il comando precedente per applicare alcune modifiche al mio profilo.
Di seguito ci sono le modifiche che ho applicato.
Quando ho riavviato la console PowerShell, come puoi vedere le modifiche sono state applicate.
Linee guida per i profili
Di seguito fornirò alcune linee guida per l’impostazione dei profili, come fornito da Microsoft.
Se usi più applicazioni host, metti gli elementi che usi in tutte le applicazioni host nel tuo
$Profile.CurrentUserAllHosts
profilo. Metti gli elementi che sono specifici per un’applicazione host, come un comando che imposta il colore di sfondo per un’applicazione host, in un profilo che è specifico per quell’applicazione host.Se sei un amministratore che sta personalizzando PowerShell per molti utenti, segui queste linee guida:
- Memorizza gli elementi comuni nel profilo
$profile.AllUsersAllHosts
- Memorizza gli elementi che sono specifici di un’applicazione host nei profili
$profile.AllUsersCurrentHost
che sono specifici dell’applicazione host- Memorizza gli elementi per utenti particolari nei profili specifici dell’utente
Assicurati di controllare la documentazione dell’applicazione host per qualsiasi implementazione speciale dei profili PowerShell.
Nessun profilo
Anche se hai creato profili da caricare ogni volta che apri la tua console, ti è permesso di eseguire PowerShell senza alcun profilo da caricare. Puoi farlo eseguendo PowerShell con il parametro -NoProfile
. Questo può essere fatto da cmd.exe, dalla finestra di dialogo Esegui o da PowerShell stesso.
Codice:
PowerShell -NoProfile
Politica di esecuzione
La politica di esecuzione di PowerShell determina se puoi eseguire script e caricare file di configurazione, inclusi i profili. La politica di esecuzione “Restricted” è quella predefinita. Puoi trovare maggiori informazioni sulla politica di esecuzione di PowerShell qui. Se usi la policy “Restricted”, impedisce l’esecuzione di tutti gli script, inclusi i profili. I contenuti del profilo non vengono applicati. Un comando Set-ExecutionPolicy
imposta e cambia la tua politica di esecuzione in tutte le sessioni PowerShell perché il valore viene salvato nel registro. Non devi impostarlo quando apri la console, o memorizzare un comando Set-ExecutionPolicy
nel tuo profilo.
Profilo su sessione remota
I profili PowerShell non vengono eseguiti automaticamente nelle sessioni remote, quindi i comandi che i profili aggiungono non sono presenti nella sessione remota. Inoltre, la variabile automatica $Profile
non è popolata nelle sessioni remote.
Se vogliamo eseguire il profilo dal nostro computer locale, in una sessione remota, dobbiamo usare Invoke-Command
cmdlet.
L’esempio seguente eseguirà il profilo locale in una sessione remota.
Codice:
$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -FilePath $profile
Output:
Come profilo non sarà popolato nella sessione remota, possiamo anche caricare il profilo remoto nella sessione. Controlla il seguente esempio.
Code:
$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -ScriptBlock {. "$env:USERPROFILE\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
Output:
Spero che il tutorial sui profili PowerShell sia utile.
Fammi sapere i tuoi commenti e pensieri.
Il tuo feedback è apprezzato.
Link correlati
- PowerShell Tutorials
- PowerShell Scripts
- about_Profiles | Microsoft Docs
- PowerShell Automatic Variables
- PowerShell Logical Operators
- PowerShell Execution Policy
- Test-Percorso – Microsoft Docs
- Nuovo-Elemento – Microsoft Docs
- Scrivi-Output – Microsoft Docs
- Set-ExecutionPolicy – Microsoft Docs
- Invoke-Command – Microsoft Docs