feb
27
2007

Un nuovo prompt per Windows PowerShell

I profili in Windows PowerShell permettono di creare alias, variabili e funzioni personalizzate valide in ogni sessione aperta; in pratica un modo per estendere le potenzialità di base di PS.
Per poter caricare un profilo (che viene letto all'avvio di ogni sessione di PS), è necessario che il criterio di esecuzione lo permetta, ovvero non può essere settato a Restricted (che è bene ricordare essere l'impostazione di default all'installazione di PS).
Esistono quattro diversi profili che vengono caricati sequenzialmente all'avvio di una sessione di PS, che vanno ad influenzare differentemente utenti e shell:
- %windir%\system32\WindowsPowerShell\v1.0\profile.ps1
Questo profilo si applica a tutti gli utenti e a tutte le shell
- %windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1
Questo profilo si applica a tutti gli utenti, ma solo alla shell Microsoft.PowerShell.
- %UserProfile%\Documenti\WindowsPowerShell\profile.ps1
Questo profilo si applica solo all'utente corrente, ma riguarda tutte le shell.
- %UserProfile%\Documenti\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Questo profilo si applica solo all'utente corrente e alla shell Microsoft.PowerShell.

Per creare un nuovo profilo utente ad esempio lanciamo il comando:
new-item -path $profile -itemtype file -force

$profile è una variabile che contiene il path al file del profilo personale. Volendo creare un altro dei restanti profili sarà necessario specificare il path completo.
A questo punto possiamo andarci a scrivere quello che desideriamo essere il nostro profilo caricato in automatico; ad esempio io ho nel mio profilo una funzione per cambiare il prompt, visto che quello di default (PS directory>) scritto in bianco non mi piace molto, primo perchè occupa 3 caratteri inutili (PS ) e poi perchè se lancio script con lunghe elaborazioni non vedo dove finisce l'esecuzione di un comando e inizia la successiva. La sezione di script in questione è la seguente:

function prompt
{
    Write-Host ("[" + $(get-location) +"]") -nonewline -foregroundcolor Red
    return " "
}

E si ottiene un prompt come da figura. E' importante ricordarsi che la funzione prompt deve ritornare una stringa, in caso contrario verrà utilizzato il prompt di default "PS> ". E' utile anche considerare che questa funzione viene valutata spesso, quindi un buon consiglio da tenere a mente è quello di non esagerare con la complessità.

Add comment

biuquote
  • Comment
  • Preview
Loading

Recent Tweets

Note: For Customization and Configuration, CheckOut Recent Tweets Documentation