«

»

Ago 31

Windows : impossibile eseguire script PS1 in Powershell

Powershell è un potente linguaggio di scripting sviluppato da Microsoft basato sul framework .NET e presente nei sistemi Windows da XP / server 2003 in poi; è dedicato in particolare agli amministratori di sistema perchè supporta tutti gli oggetti e le API del sistema operativo e quindi permette di creare script complessi per qualsiasi azione sia necessario automatizzare su una macchina; per evitare abusi od esecuzioni pericolose Microsoft ha limitato le policy di esecuzione di default di uno script Powershell, è quindi necessario lanciarli con particolari flag per poterli eseguire.

 

Gli script Powershell vengono eseguiti da riga di comando essendo Powershell una shell testuale, se volete farli eseguire in automatico dovete creare un file di testo con estensione .PS1 che contenga tutti i comandi dello script, es. SCRIPT.PS1 (in modo simile a come create i files batch .BAT) , la sintassi per l’esecuzione dal prompt dei comandi (cmd) è :

powershell.exe -file script.ps1

Se però il vostro script non è firmato digitalmente e non avete cambiato le policy di default di esecuzione di Powershell non verrà eseguito ma si bloccherà con un errore simile alla videata seguente :

In pratica verrà bloccata l’esecuzione con l’errore :

Impossibile caricare il file C:\script.ps1. L’esecuzione di script è disattivata nel sistema corrente.

Se lo script PS1 lo avete scritto voi o siete sicuri delle azioni che contiene potete tranquillamente saltare questo controllo di sicurezza senza ulteriori complicazioni di firma digitale o altro semplicemente eseguendo Powershell con un flag che eviti il controllo delle policy, la sintassi sarà quindi :

powershell.exe -executionpolicy bypass -file script.ps1

In questo modo il vostro script sarà eseguito nel contesto di sicurezza dell’utente del sistema Windows senza ulteriori blocchi.

Se dovete automatizzare il tutto per una schedulazione automatica per esempio basta che prendete tutta la riga di comando e la salvate in un file batch (.BAT), esempio SCRIPT.BAT , poi richiamate semplicemente il batch dal vostro schedulatore e questo lancerà in automatico Powershell ed eseguirà lo script PS1.

 

Per maggiori informazioni sulle policy di esecuzione di Powershell e sulla stessa shell di Microsoft potete fare riferimento anche a questi articoli :

https://technet.microsoft.com/it-IT/library/hh847748.aspx

https://docs.microsoft.com/it-it/powershell/scripting/getting-started/getting-started-with-windows-powershell?view=powershell-6

https://it.wikipedia.org/wiki/Windows_PowerShell

 

ATTENZIONE : in rete si trovano diversi script Powershell per automatizzare e velocizzare le più diverse funzioni in Windows, ovviamente prima di eseguirli controllate bene cosa fanno editando il testo degli stessi, ricordatevi che essendo molto potenti possono anche essere molto pericolosi.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>