Blog ❯ Autore: Fabio Moschini|Data: 09.12.2022
Esempi con PowerShell - 2
Powershell

Esempi di script con PowerShell - 2
Visualizzare una message box
Con PowerShell è possibile visualizzare informazioni tramite finestre, ad esempio utilizzando una message box.Con l'esempio che segue, visualizziamo una semplice message box con il solo pulsante di conferma:Output:

Vediamo, nel dettaglio, le due istruzioni utilizzate. La prima:serve ad aggiungere l'assembly PresentationFramework all'interno della sessione PowerShell.
All'interno dell'assembly, è definito il namespace System.Windows che contiene l'implementazione della classe MessageBox.
La seconda istruzione:invoca il metodo Show della classe System.Windows.MessageBox con i parametri opportuni:
- il primo parametro è una stringa che definisce il testo da visualizzare all'interno della message box
- il secondo parametro è una stringa con il titolo della message box
- il terzo parametro è una stringa che indica i pulsanti da visualizzare nella message box:
- - 'OK'
- - 'OKCancel'
- - 'YesNoCancel'
- - 'YesNo'
- infine, il quarto parametro è una stringa che definisce il tipo di icona da visualizzare all'interno della message box:
- 'None'
- 'Error'
- 'Question'
- 'Warning'
- 'Information'
Per le message box che visualizzano più pulsanti, si può memorizzare il tipo di pulsante premuto in questo modo:
Cambiare il colore del testo visualizzato
Per scrivere un messaggio di warning, utilizziamo il cmdlets Write-Warning:Il testo è visualizzato in giallo.Per modificare a proprio piacimento il colore del testo visualizzato, si utilizza l'istruzione Write-Host impostando i parametri -BackgroundColor e -ForegroundColor:Output:

Riavviare il computer
Per riavviare il computer, si può utilizzare il cmdlets Restart-Computer:Elencare i processi in esecuzione
Per elencare i processi in esecuzione sul computer, si utilizza:E' possibile ordinare i processi elencati, ad esempio in base all'utilizzo di memoria decrescente:Se i processi sono numerosi, può essere utile limitare la visualizzazione ai primi n elementi:Utilizzare i numeri in esadecimale o binario
Per convertire un numero esadecimale in decimale, è sufficiente anteporre al numero esadecimale la sequenza 0x:Output:2623
Per convertire un numero da decimale a binario, si può utilizzare:Il primo parametro è il numero decimale da convertire.
Utilizzare form custom
Con PowerShell si possono definire oggetti di tipo "WinForm", valorizzando le opportune proprietà.Al loro interno, le form possono contenere oggetti visuali come pulsanti, text box, label.
Vediamo un esempio:Analizziamo le singole righe:
riga 1: come abbiamo già visto in uno dei precedenti esempi, questa istruzione serve ad aggiungere l'assembly System.Windows.Forms all'interno della sessione PowerShell;
riga 2: creazione di un oggetto Windows.Forms.Form;
riga 3: valorizzazione della proprietà Text della form;
riga 4: valorizzazione delle dimensioni della form;
riga 5: definizione della posizione in cui sarà visualizzata la form;
riga 6: creazione di un oggetto System.Windows.Forms.Button;
riga 7: aggiunta del gestore dell'evento click, il cui codice visualizza la data e l'ora corrente;
riga 8: valorizzazione della proprietà Text del bottone;
riga 9: definisce la posizione del bottone in riferimento alla form;
riga 10: aggiunge il bottone alla form;
riga 11: visualizza la form come una finestra modale. La form è molto semplice: contiene un bottone la cui pressione visualizza la data e l'ora corrente nel prompt da cui viene eseguito lo script.
Cancellazione della cronologia
Per cancellare la cronologia dei comandi di una sessione PowerShell, il comando da utilizzare è:Informazioni sui dischi collegati al computer
Per avere le informazioni sui dischi collegati al computer, si utilizza il cmdlets Get-Disk:Get-Disk elenca i dischi logici; per avere l'elenco dei dischi fisici si utilizza:Infine, per avere la lista dei volumi:Effettuare uno screenshot
Con questo script è possibile effettuare lo screenshot del monitor principale:Personalizzare i colori di PowerShell
Per modificare i colori in una finestra PoweShell, è possibile utilizzare questo script:In questo caso, per il colore di sfondo viene utilizzata il blu, mentre il testo è bianco.Fermare un processo
Abbiamo già visto il cmdlets Get-Process per elencare i processi in esecuzione.Per interrompere un processo, si utilizza il comando Stop-Process seguito dal parametro -Id <id del processo> oppure dal parametro -Name <nome del processo>.
L'id del processo è un'informazione che può essere determinata tramite Get-Process.
Esempi:
- per terminare tutte le istanze del processo "CalculatorApp" (calcolatrice):Stop-Process -Name "CalculatorApp"
- per terminare una particolare istanza di un processo, occorre utilizzare il suo Id:Stop-Process -id 12345
Convertire in HTML
E' possibile convertire in HTML le informazioni fornite da PowerShell come risultato dell'esecuzione di comandi.Ad esempio, per avere una pagina in formato HTML con l'elenco dei processi in esecuzione, è possibile utilizzare questo comando:Vediamo nel dettaglio cosa succede:
- il primo comando eseguito è Get-Process che ritorna l'elenco dei processi attivi;
- il risultato viene inviato al comando ConvertTo-Html tramite |, il quale estrae le informazioni specificate da -Property e le utilizza per creare una tabella HTML con il titolo indicato dal parametro -Title;
- infine, il risultato del comando ConvertTo-Html viene inviato a Out-File per scrivere il file proc.html.