Il principale limite della linea di comando (CLI) è quello di avere una usabilità piuttosto limitata per l'utente medio, che non sempre è in grado di interagire con gli script e il terminale. Per ovviare a tale limite, senza rinunciare alle enormi potenzialità della CLI, è possibile, usando Windows Forms, creare delle GUI (interfacce grafiche) con pulsanti, menu, caselle di testo, etc. che agevolano la fruizione di script in PowerShell preimpostati, sempre modificabili e ulteriormente espandibili.
Ogni giorno vi trovate a dover convertire decine di documenti Office in file PDF per poterli poi archiviare, o spedire via mail ai clienti, va bene che ci sono le stampanti virtuali che creano i PDF, però quanto tempo perdete ad aprire il singolo file di Office, inviarlo in stampa e convertirlo in PDF, oppure salvarlo in formato PDF se avete delle versioni recenti della suite di programmi per l'ufficio. Utilizzando un paio di script PowerShell è possibile convertire, in una sola volta, gruppi di file Office in formato PDF attendendo solo qualche momento a seconda del numero di file presenti.
Ormai viviamo circondati dai QR code, che altro non sono che delle piccole immagini che possono contenere dati e informazioni di vario tipo, come la password del nostro Wi-fi di casa che non vogliamo comunicare ai nostri ospiti, informazioni sull'azienda o un link Web da raggiungere. Dopo aver visto come crearli online, ora vediamo come farlo con PowerShell localmente nel nostro computer.
Tra le tante cose curiose, e magari inutili per alcuni, che si possono fare con PowerShell, vi è anche la possibilità di ascoltare i file MP3. Chiaramente non avete un player audio completo come VLC, per esempio, dove potete scegliere i brani, fermarli o modificare il volume, PowerShell si limita a riprodurre i brani che trova nella cartella che gli indicate nello script e per fermarli dovete solo chiudere PowerShell.
La presenza di una richiesta di password è indice di protezione e di accesso controllato; perché allora non impostarne una anche per la shell, che è uno degli strumenti più cruciali per la sicurezza del nostro PC? L'ideale è che si tratti di una password diversa da quella dell'utente, in modo che se l'account viene compromesso, non è comunque automatico poter accedere anche alla shell con la medesima password.
Una delle cose più difficili da ricordare, per me, di PowerShell è la sintassi diversa dei cmdlet rispetto ai vecchi comandi DOS a cui sono abituato. Così mi sono messo a cercare uno script in grado di creare un menu, con varie opzioni, che mi permetta di avviare i cmdlet più utili per il mio lavoro.
Avere un profilo PowerShell consente di snellire l'uso della shell e costruirsi il proprio "coltellino svizzero" di funzioni e comandi (o meglio, "cmdlet" come si chiamano nel gergo di Powershell), rendendo l'uso del terminale più rapido e "accogliente" per le proprie esigenze. Useremo PowerShell 5.1, comunemente presente nei recenti sistemi Windows, ma la procedura è facilmente adattabile anche a PowerShell Core 7 (per il quale, ad esempio, il percorso del file del profilo è differente: $HOME\Documents\PowerShell).
In questo articolo andremo a vedere come creare un certificato personale per firmare digitalmente uno script PowerShell per permettere la sua esecuzione in ambienti particolarmente restrittivi. L'esecuzione di script PowerShell è normalmente disattivata, permettere l'esecuzione di tutti gli script può non essere la soluzione più adatta, in termini di sicurezza, magari possiamo scegliere un approccio più morbido per eseguire script firmati da noi.
Ogni periferica che colleghiamo al computer, in particolare cellulari, pendrive, cuffie e microfoni, viene registrata da Windows e lascia una traccia del vostro passaggio. Anche se questi dispositivi, una volta scollegati, sono nascosti, basta abilitare l'opzione nella gestione dispositivi per vederli nuovamente. Inoltre mi è capitato di riscontrare dei problemi di funzionamento di alcuni (vecchi) applicativi aziendali, le barre telefoniche, quando troppe cuffie e microfoni "fantasma" erano presenti e provocavano problemi con l'audio. Così se vogliamo non far sapere che qualcosa è stato collegato al computer, oppure riscontriamo degli strani problemi legati alle periferiche, è necessario fare pulizia.
Se pensate che una password non sia sufficiente per proteggere un file importante o volete salvarlo nel cloud senza dover ricordare una password, ma nemmeno lasciandolo in chiaro, allora potete ricorrere al semplice programma che vi suggeriremo e a un breve script PowerShell per manipolare la "genetica del file". Il "genoma" di ogni file è fatto di bit, che nella loro semplice binarietà rendono possibili le molteplici "combinazioni genetiche" che denotano in modo peculiare e unico ogni file. Il "microscopio" per analizzare i bit è uno strumento imprescindibile per le analisi di digital forensics e solitamente viene indicato come "hex editor", ossia editor esadecimale, con chiaro riferimento alla codifica esadecimale solitamente utilizzata per leggere i byte.
Al lavoro mi capita spesso di ricevere richieste di supporto, nella maggior parte dei casi da persone che lavorano da casa, perché non riescono a raggiungere un indirizzo di qualche sito. Questo è causato dai server DNS che non riescono, per qualsiasi motivo, a riconoscere l'indirizzo Web che abbiamo inserito e quindi a convertirlo nel suo indirizzo IP e a dirigervi il traffico permettendoci di raggiungerlo. Per risolvere il problema, una volta scoperto il reale indirizzo IP del sito, basta modificare il file hosts e inserire i dati trovati con i comandi utilizzati.
Ogni computer, collegato in una rete di lavoro o casalinga, deve aver un proprio indirizzo IP privato per essere identificato in modo univoco all'interno della stessa rete. Quando vi collegate a Internet acquisite anche un indirizzo pubblico che serve al vostro provider per "dirigere il traffico" e per riconoscere il computer quando vi collegate a qualche sito o servizio.
In questo articolo andremo a raccogliere una serie di comandi, utilizzabili da PowerShell, per conoscere meglio le singole componenti hardware del nostro computer. Ci sono molti altri sistemi, e programmi, per estrarre lunghi e complicati report che contengono tutte le caratteristiche di un computer, ma proprio per la loro complessità, o per il fatto che non vogliamo installare un programma per avere un singolo dato che ci serve, utilizzeremo la riga di comando di PowerShell.
Il Terminale di Windows 11 permette di avviare PowerShell e il prompt dei comandi, per esempio, dispone di una barra funzioni, nella parte alta, da cui aprire altri Tab o richiamare i vari comandi e ambienti avviabili dal Terminale stesso, oltre a permettere di chiudere il programma. Ma cosa succede se questa barra, per qualche motivo, sparisce?
Quando si prepara un computer nuovo, dopo l'installazione di Windows vanno aggiunti un numero imprecisato di programmi, però può sempre capitare di dimenticarsi di avviare l'installazione di qualcosa e, soprattutto, stancarsi di fare click su ogni richiesta che appare. Girovagando per il Web ho trovato su Reddit, a cui riconosco i meriti iniziali, uno script che permette di installare in maniera silenziosa, cioè senza intervento dell'utente, tutti quei programmi che prevedono questa opzione, mentre per gli altri comparirà la normale procedura d'installazione. In questo modo ridurrete il numero di conferme da dare e sarete sicuri di installare tutti i software che vi servono.
Il cmdlet get-childitem è l'equivalente, con alcune migliorie, del comando dir che si utilizzava una volta per elencare i file presenti nel disco fisso o in alcune cartelle. Vediamo alcuni esempi su come utilizzarlo in PowerShell.
Importante avvertenza prima di cominciare, il registro di configurazione di Windows è molto importante, e delicato, fare modifiche inadatte, o scelte a caso su Internet, potrebbe causare gravi problemi al sistema operativo come instabilità o mancato avvio. Quindi eseguite un backup del sistema, oppure create almeno un punto di ripristino, prima di procedere alla modifica del registro di configurazione.
Volete sapere quanto tempo impiegate a scaricare un file e quale è a velocità media del download? PowerShell li calcola al vostro posto. Lo script non è applicabile a tutti i tipi di download, dovete avere il link diretto del file da scaricare.
Tra le tante possibilità di PowerShell vi è anche quella del System.Speech, cioè possiamo far parlare il computer e leggere il contenuto di un file di testo TXT. Facciamo un paio di esempi pratici di applicazione di questa funzione. E' arrivata quella lunghissima relazione del vostro capo, che non avete nessuna voglia di leggere, ma con poche righe di codice possiamo utilizzare PowerShell che la legga al nostro posto e noi l'ascoltiamo facendo altro. Il far parlare il computer, tramite PowerShell, lo possiamo usare per fare uno scherzo a qualcuno, oppure per dare un messaggio di benvenuto all'accensione del computer o in determinati orari.
Una volta, con il prompt dei comandi, erano Date e Time i comandi da utilizzare, vediamo come visualizzare e cambiare la data e ora con PowerShell. Prima che possiate commentare che ci sono metodi più semplici per fare questa operazione, vi rispondo che bisogna imparare a fare anche le cose più difficili e PowerShell ormai mi ha "conquistato".
Il modulo di PowerShell, che si chiama Microsoft.PowerShell.LocalAccounts, permette attraverso i suoi cmdlet di gestire tutti gli account, e i gruppi, presenti nel sistema operativo, creandone dei nuovi, cancellandoli o rinominandoli.
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.
Proseguendo gli "studi" su PowerShell in questo articolo volevo soffermarmi sui vari cmdlet che permettono di gestire file e cartelle, quindi creazione, cancellazione, rinomina e spostamento. Vediamo come utilizzarli.
Prima che possiate commentare che esiste Windows Update per la loro distribuzione, vi dico che a livello aziendale può succedere di tutto, anche che il server WSUS non funzioni per niente, o quasi, così le patch non vengono installate e lo dobbiamo fare noi da remoto, e manualmente, perché altrimenti non si può aggiornare l'antivirus aziendale che non trova le ultime patch di Windows.
Abbiamo creato il nostro script personalizzato per eseguire il backup dei nostri documenti, dobbiamo però ripetere questa operazione più volte al giorno, oppure di eseguirla in determinati momenti, il modo migliore per farlo è di utilizzare le operazioni pianificate di Windows.