PowerShell, per sua natura, mostra sempre lo script, e tutti i comandi eseguiti, nella schermata della console, questo può andare bene nella maggior parte dei casi, ma ci sono script che potremmo voler eseguire in modo che non vengano visualizzati dall’utilizzatore del computer o da chi avvia lo script. PowerShell però non permette di eseguire uno script in maniera completamente invisibile, ma per farlo dobbiamo ricorrere a uno script VBS che ho trovato su Stackoverflow.com ed è allegato all’articolo se ne avete bisogno.

A seconda della versione di PowerShell installata nel vostro computer, se la 5 di default o la 7 più aggiornata, il comando per eseguire in maniera silente uno script PowerShell assumerà questi formati:

  • PowerShell 5.x: WScript.exe //B "percorso completo e nome file.VBS" powershell.exe -ExecutionPolicy ByPass -file "percorso completo e nome file.ps1"
  • PowerShell 7.x: WScript.exe //B "percorso completo e nome file.VBS" pwsh.exe -ExecutionPolicy ByPass -file "percorso completo e nome file.ps1"

Dove dovrete inserire i due percorsi completi in cui avete salvato il file VBS e lo script PS1 di PowerShell che dovete eseguire.

Il mio comando diventa così WScript.exe //B "d:\esecuzione_silenziosa.vbs" pwsh.exe -ExecutionPolicy ByPass -file "d:\script.ps1" ed è questo che utilizzeremo per creare un collegamento sul desktop che ci permetta di avviarlo quando ci serve.

Nello stesso modo possiamo eseguire dei singoli cmdlet di PowerShell, anche qui dobbiamo indicare il percorso dove trovare il file VBS e il cmdlet da avviare: wscript.exe /b "D:\Esecuzione_silenziosa.vbs" powershell.exe -ExecutionPolicy Bypass -Command "New-Item d:\Test.txt -Force"

Invece di vedere l’apertura della console di PowerShell e l’esecuzione del comando, la creazione del file Test.txt nel disco D:\ avverrà in modo del tutto invisibile.

Come eseguire script PowerShell maniera invisibile all’utente

A seconda della versione di PowerShell installata nel sistema operativo, il comando cambierà formato:

  • PowerShell 5.x: wscript.exe /b "D:\Esecuzione_silenziosa.vbs" powershell.exe -ExecutionPolicy Bypass -Command "get-childitem > d:\lista.txt -Force"
  • PowerShell 7.x: wscript.exe /b "D:\Esecuzione_silenziosa.vbs" pwsh.exe -ExecutionPolicy Bypass -Command "get-childitem > d:\lista.txt -Force"

Creazione del collegamento

Abbiamo detto che il comando da avviare è WScript.exe //B "d:\esecuzione_silenziosa.vbs" pwsh.exe -ExecutionPolicy ByPass -file "d:\script.ps1", quindi clicchiamo con il tasto destro del mouse sopra il desktop e dal menu scegliamo NuovoCollegamento.

Come eseguire script PowerShell maniera invisibile all’utente

Inseriamo il comando appena visto nel percorso del collegamento.

Come eseguire script PowerShell maniera invisibile all’utente

Diamogli un nome che lo identifichi chiaramente e il collegamento è creato sul desktop.

Come eseguire script PowerShell maniera invisibile all’utente

Se non vi piace vedere l’icona generica, basta cliccare con il tasto destro del mouse sopra di essa e dal menu scegliere Proprietà. Da qui possiamo fare il Cambia icona e metterne una più adeguata.

Come eseguire script PowerShell maniera invisibile all’utente

Si potrebbe anche creare un file di comandi, un batch o cmd, per eseguire lo script, però vedremmo aprirsi per un attimo la schermata del prompt dei comandi. La creazione del collegamento è il modo per l’invisibilità più completa.

Attenzione solo a non cliccarci sopra troppe volte perché vi sembra che non stia succedendo niente e avete il dubbio che non ha preso il vostro clic.

Se lo scopo finale è, per esempio, di creare un backup dei file andate a controllare che sia stato eseguito.