Come eseguire i propri script / cmdlet PowerShell

Per impostazione predefinita, Microsoft ha impedito l'esecuzione di script PowerShell personalizzati, cmdlet a.k.a., impostando PowerShell "ExecutionPolicy" su "Restricted". Questo può essere cambiato facilmente.

È possibile modificare ExecutionPolicy per script / cmdlet PowerShell eseguendo il comando PowerShell Set-ExecutionPolicy.

Per elaborare le opzioni per questo comando, è sufficiente eseguire quanto segue in PowerShell:

Set-ExecutionPolicy -ExecutionPolicy -?

Personalmente, preferisco impostare la ExecutionPolicy su "RemoteSigned". Questo mi consente di eseguire i miei script, ma impedisce l'esecuzione di script non firmati da altri:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Provalo come segue: Crea un nuovo script PowerShell sul tuo desktop. Fare clic con il tasto destro del mouse sul desktop, nuovo> Documento di testo. Chiamalo test.ps1

Fai clic con il tasto destro su test.ps1 e seleziona Modifica. Dovrebbe aprirsi con PowerShell ISE (Integrated Scripting Environment). Digitare quanto segue nel riquadro superiore:

Echo "Ciao mondo!"

inizio-sonno 10

Salvalo con Ctrl + S e chiudilo.

Ora apri PowerShell, passa al desktop e prova a eseguire lo script:

cd "$ env: userprofile \ Desktop"

. \ Test.ps1

Quindi modifica la tua ExecutionPolicy in "RemoteSigned" e riprova:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

. \ Test.ps1

Si noti che lo script / cmdlet viene referenziato utilizzando ". \". Puoi anche usare il percorso completo, ma non puoi eseguirlo semplicemente digitandone il nome (molto simile a Unix, eh?).

Nota anche l'uso di "$ env: profilo utente" per rappresentare il percorso del tuo profilo utente. Nel classico processore dei comandi di Windows, questo era rappresentato semplicemente con "% userprofile%".

Infine, tieni presente che ciò non funzionerà come indicato se non sei nel gruppo Administrators locale. È, infatti, una best practice evitare l'uso quotidiano di un account che si trova nel gruppo Administrators locale, quindi questo potrebbe essere il tuo caso. Per ovviare a ciò, è sufficiente lanciare powershell come amministratore per impostare la politica di esecuzione. Vedere qui.