12812 Letture
PowerShell, come creare script con interfaccia grafica

PowerShell, come creare script con interfaccia grafica

Sveliamo come creare script PowerShell dotati di interfaccia grafica in modo semplice e veloce con Posh GUI.

PowerShell è l'interfaccia a riga di comando integrata in Windows che permette di utilizzare un linguaggio di scripting, sviluppato da Microsoft, per eseguire ogni genere di operazioni sul sistema in uso e sui dispositivi collegati alla LAN.
Script PowerShell permettono di estrarre dal sistema un ampio ventaglio di informazioni e, addirittura, modificarne automaticamente la configurazione.
Nell'articolo Windows PowerShell, come funziona l'interfaccia che sostituisce il prompt dei comandi avevamo descritto alcuni esempi concreti di utilizzo mentre in altri approfondimenti abbiamo visto come usare PowerShell per gestire esigenze concrete: vedere queste pagine.

Non tutti sanno, però, che gli script PowerShell possono essere arricchiti con un'interfaccia grafica (GUI) così da permettere all'utente, ad esempio, di scegliere quali operazioni svolgere.


Se si avesse la necessità di sviluppare da zero un'applicazione per sistemi Windows, PowerShell non è ovviamente la scelta migliore. Questa shell, però, dal momento che è sempre presente nel sistema operativo Microsoft e non necessita dell'installazione di alcun componente aggiuntivo, è utile per avviare script più o meno complessi in grado di effettuare operazioni ricorrenti o interventi di vario tipo.

Una GUI per un qualsiasi script PowerShell può essere sicuramente creata ricorrendo a Visual Studio ma l'ambiente di sviluppo integrato sviluppato da Microsoft non è strettamente necessario per giungere allo stesso risultato.

L'ottima applicazione web Posh GUI consente di preparare visualmente, con un approccio "punta e clicca", l'interfaccia da usare per il proprio script PowerShell.
Posh GUI consente di definire la struttura del form, aggiungere tutti gli elementi che fanno normalmente parte di un'applicazione Windows e predisporre gli eventi da utilizzare.

PowerShell, come creare script con interfaccia grafica

Dopo aver selezionato l'elemento d'interesse, form compreso, agendo sulle voci contenute nella colonna di destra si può modificare il look di ciascun oggetto.
Non solo. Selezionando un oggetto (ad esempio un pulsante) e facendo clic sulla scheda Events, è possibile istanziare gli eventi che saranno successivamente usati a livello di codice.

PowerShell, come creare script con interfaccia grafica

Nell'esempio abbiamo spuntato l'evento Click in modo tale che Posh GUI generi automaticamente il codice PowerShell necessario per gestire la risposta al clic dell'utente sul pulsante selezionato. Selezionando l'icona "< >" a destra dell'evento, nella colonna di destra di Posh GUI, è possibile indicare il nome della funzione che PowerShell dovrà richiamare al verificarsi dell'evento.

PowerShell, come creare script con interfaccia grafica

Come si vede, nel nostro caso abbiamo chiamato la funzione cmdButton_Click.

A questo punto, cliccando su Code - in alto - si troverà il codice da inserire nello script PowerShell per attivare la visualizzazione del form appena approntato, insieme con tutti gli elementi che lo compongono.

PowerShell, come creare script con interfaccia grafica

Cliccando su Copy, in basso a sinistra nella schermata di Posh GUI, aprendo un file di testo puro (ad esempio con Notepad++) oppure digitando Windows PowerShell ISE nella casella di ricerca di Windows e usando la combinazione di tasti CTRL+V si otterrà il codice pronto per essere utilizzato.

PowerShell, come creare script con interfaccia grafica

Il codice dello script PowerShell dovrà essere necessariamente inserito prima della riga [void]$Form.ShowDialog() che fa comparire la GUI (dove è posto il commento #Write your logic code here).


Si supponga di creare un form strutturato come in figura, con tre checkbox racchiusi all'interno di un elemento panel:

PowerShell, come creare script con interfaccia grafica

Inserendo il codice seguente si farà in modo di nascondere, al clic sul pulsante, tutto il contenuto dell'elemento panel. Inoltre, verrà mostrata la stringa "OK" nell'etichetta label solo nel caso in cui l'utente avesse spuntato il primo checkbox:

function cmdButton_Click {
$Panel1.Visible = $false
if ($CheckBox1.Checked) { $Label1.Text = "OK" }
}


PowerShell, come creare script con interfaccia grafica

Eseguendo lo script PowerShell così creato, si otterrà il comportamento desiderato.

PowerShell, come creare script con interfaccia grafica

Va tenuto presente che per impostazione predefinita sui sistemi Windows la politica di esecuzione degli script PowerShell è Restricted. Come spiegato anche in questa pagina, il sistema operativo consente di default l'esecuzione di singoli comandi ma non di interi script.
Utilizzando la cmdlet Set-ExecutionPolicy è ovviamente possibile modificare la policy applicata sul proprio sistema per l'esecuzione degli script PowerShell (vedere questa pagina di supporto).
Se però si preferisse evitare di intervenire con Set-ExecutionPolicy, il consiglio è quello di aprire il prompt di PowerShell con i diritti di amministratore e digitare:


powershell -noprofile -executionpolicy bypass -file "nomescript.ps1"


PowerShell, come creare script con interfaccia grafica

Al posto di nomescript.ps1 bisognerà indicare il nome dello script PowerShell da eseguire salvato nella stessa cartella.

Il consiglio finale è quello di registrarsi su Posh GUI: in questo modo si potranno memorizzare, all'interno del proprio account, le interfacce via a via create per recuperarle al bisogno. Posh GUI è utilizzabile anche senza registrazione ma alla fine del lavoro, chiudendo il sito, si perderanno tutte le modifiche applicate.

PowerShell, come creare script con interfaccia grafica