Ottimizzare lo sviluppo di Script PowerShell tramite l’uso produttivo e consapevole di Copilot

L’automazione è diventata una componente fondamentale per migliorare l’efficienza e la produttività nella attività di gestione, monitoraggio di un’infrastruttura informatica moderna. Sebbene PowerShell, una potente shell di scripting di Windows, abbia rivoluzionato il modo in cui gli amministratori di sistema gestiscono e automatizzano le loro attività, lo sviluppo di script può essere un compito impegnativo. Copilot può essere impiegato come un assistente di codifica che aiuta a navigare attraverso la complessità dello sviluppo di script, offrendo suggerimenti di codice in tempo reale. Questo articolo esplorerà come Copilot può essere utilizzato in modo produttivo e consapevole per migliorare lo sviluppo di script PowerShell, permettendo di automatizzare le attività in modo più efficiente.

Microsoft Copilot è una assistente digitale basata sull’intelligenza artificiale che mira a fornire assistenza personalizzata agli utenti per una serie di attività e attività tra cui, ad esempio, anche lo sviluppo di script PowerShell. Scendendo nei dettagli Microsoft Copilot è una soluzione di intelligenza artificiale (AI) basata su GPT-4 e Dall-E 3 di OpenAI che combina la potenza dei large language model (LLM) con i dati in Microsoft Graph (un’API unificata protetta per connettersi ai dati presenti in vari servizi di Microsoft 365), a riguardo si veda ChatGPT e Microsoft Copilot: Qual è la differenza? – Supporto tecnico Microsoft.

Microsoft Copilot è stato lanciato il 26 settembre 2023 ed è stato integrato in Windows 11 come parte dell’aggiornamento 23H21. Il 15 gennaio 2024 Copilot è stato aggiornato a GPT-4 Turbo che permette una maggiore comprensione delle richieste degli utenti e introduce una finestra di contesto di 128K, equivalente a circa 300 pagine di testo in singolo prompt come riportato nella documentazione pubblicata da OpenAI:

GPT-4 Turbo is our latest generation model. It’s more capable, has an updated knowledge cutoff of April 2023 and introduces a 128k context window (the equivalent of 300 pages of text in a single prompt). The model is also 3X cheaper for input tokens and 2X cheaper for output tokens compared to the original GPT-4 model. The maximum number of output tokens for this model is 4096.”

GPT-4 Turbo è aggiornato fino ad aprile 2023, come indicato in GPT-4 and GPT-4 Turbo, questo significa che Copilot ha la capacità di comprendere e generare testo basato su dati di apprendimento fino a quella data, per ulteriori informazioni si veda l’annuncio del 15 gennaio 2024 Microsoft porta il potere dell’AI generativa a un numero sempre maggiore di persone e aziende: annunciato Copilot Pro, l’app mobile Copilot per Microsoft 365 e nuove funzionalità – Microsoft News Center Italy.

Va comunque precisato che l’utilizzo di Copilot deve essere consapevole , infatti come precisato da Microsoft i contenuti e gli output prodotti dall’intelligenza artificiale possono contenere imprecisioni ed è quindi importante rivedere tutti i contenuti generati dall’intelligenza artificiale per assicurarsi che siano stati prodotti in modo accurato come desiderato, a riguardo si veda Sfrutta la tua produttività con L’intelligenza artificiale e Microsoft Copilot – Supporto tecnico Microsoft.

Copilot come anche ChatGPT, a differenza di un motore di ricerca non ha la capacità di eseguire ricerche in Internet e potrebbe non disporre di informazioni aggiornate. Questo può lasciare spazio a errori o “allucinazioni” all’interno delle sue risposte, di conseguenza come detto precedentemente è importante rivedere le informazioni fornite. Inoltre come con tutti gli strumenti di intelligenza artificiale basati su chat, quando si formulano le domande può essere necessario seguire un approccio basato su tentativi per ottenere le risposte che si stanno cercando, a riguardo si veda ChatGPT e Microsoft Copilot: Qual è la differenza? – Supporto tecnico Microsoft.

Copilot e PowerShell

La versione più recente di PowerShell che Copilot dichiara di conoscer al momento attuale è la 7.4 citando come fonte delle sue informazioni le seguenti pagine del sito Microsoft Learn:

Figura 1: Versione PowerShell più recente presente nella base di conoscenza di Copilot

Come si può notare consultando le date di rilascio delle ultime release nelle varie versioni di PowerShell alla pagina Releases · PowerShell/PowerShell (github.com) è ragionevole pensare che Copilot non abbia informazioni relative a quelle rilasciate dopo aprile 2023 come ad esempio la 7.5.0-preview.1, la 7.4.1, 7.3.5 e successione o la 7.2.12 e successive. Questo però potrebbe non essere corretto in quanto Copilot indica di avere la possibilità di utilizzare strumenti che gli permettono di cercare informazioni in Internet su cui però non fornisce per ragioni di privacy informazioni.

Figura 2: Base di conoscenza di Copilot

E’ possibile verificare il fatto che Copilot è in grado di ricercare informazioni in Internet, provando a chiedere, ad esempio, informazioni sul parametro -Empty del cmdlet New-Guid, introdotto nella release 7.5.0-preview.1 rilasciata il 18 gennaio 2024. Come si può notare dalla Figura 3 Copilot riesce a fornire informazioni circa il parametro -Empty del cmdlet New-Guid, anche se fa una confusione sulla versione di PowerShell che avrebbe introdotto tale parametro a riprova che è necessario rivedere le informazioni fornite che indicato precedentemente.

Figura 3: Test di ricerca informazioni in Internet da parte di Copilot

Provando a chiedere a Copilot quali sono le fonti su cui è stata consolidata la sua base di conoscenza per quanto riguarda PowerShell si ottiene una risposta evasiva, ma in generale sembrerebbe che l’insieme di dati sia stato generato tramite libri, siti web, documentazione ufficiale di PowerShell, post di blog tecnici, esempi di codice, tutorial, e altro materiale disponibile pubblicamente.

Figura 4: Fonti d’informazione utilizzate da Copilot relativamente a PowerShell

Un altro aspetto importate da tenere in debita considerazione è che Copilot non ha la capacità di eseguire o testare script PowerShell o qualsiasi altro tipo di codice che gli venga richiesto di generare e quindi il codice generato va analizzato e provato prima di essere utilizzato.

Figura 5: Copilot non è in grado di testare il codice PowerShell generato

Per quanto riguarda invece la modalità con cui Copilot genera uno script PowerShell, se interrogato a tal proposito Copilot riporta di utilizzare esempi già presenti nella sua base di conoscenza, ma di avere anche la capacità di generare in modo autonomo il codice grazie a tecniche di apprendimento automatico.

Figura 6: Come Copilot genera gli script PowerShell

Copilot è anche in grado di provare a seguire best practices per lo sviluppo di codice PowerShell sicuro e con attenzione alle performance, evitando l’utilizzo di cmdlet obsoleti e cercando di ottimizzare il codice.

Figura 7: Copilot segue le best practice per la generazione di script PowerShell

Infine ci sono script PowerShell che Copilot non può generare, come ad esempio script ritenuti dannosi o non etici o script che richiedono informazioni specifiche dell’utente, accessi a risorse specifiche o ovviamente script che vanno oltre le informazioni di cui la base di conoscenza di Copilot dispone.

Figura 8: Script PowerShell che Copilot non può generare

Utilizzo corretto di Copilot

Per utilizzare in modo corretto Copilot bisogna innanzitutto come porre in modo corretto le domande, ovvero come gestire correttamente il prompting. In generale occorre seguire le seguenti regole:

  • Esprimere in modo semplice e diretto la necessità.
  • Per ottenere la risposta migliore, è importante concentrarsi sugli elementi chiave.
  • Continuare la conversazione perfezionando le richieste per ottenere risposte più utili e personalizzate.

Durante l’interazione con Copilot tenere presenti le seguenti considerazioni:

  • Tenere conto del fatto che al momento Copilot ha dei limiti quindi è necessario fornire molti dettagli durante la conversazione.
  • Approcciarsi a Copilot in modo professionale utilizzando un linguaggio educato, ciò migliora le risposte ottenute.
  • Comunicare in modo chiaro prestando attenzione alla punteggiatura, alla grammatica e alle maiuscole.
  • Utilizzare le virgolette, ciò aiuta Copilot a sapere cosa scrivere, modificare o sostituire.
  • Evitare di cambiare argomento durante la conversazione, per passare ad un altro argomento scrivere “nuovo argomento” o aprire una nuova conversazione.

Quando si crea una conversazione occorre immaginare di parlare con un collega disponibile senza rimarcare l’ordine, la formattazione o la struttura, ma mantenendo la conversazione su un livello colloquiale.

Nel Copilot Toolkit vengono date indicazioni specifiche su cosa fare e non fare quando si interagisce con Copilot.

Figura 9: Come gestire correttamente il prompting in Copilot

È possibile reperire varie informazioni sul corretto utilizzo di Copilot al seguente Guida e formazione su Microsoft Copilot.

Come gestire il prompting di Copilot per generare efficacemente uno script Powershell

Il primo passo per una generazione efficiente di uno script è quello di porre a Copilot la richiesta in modo semplice fornendo tutti i dettagli fondamentali, di seguito nella Figura 10 un esempio su come iniziare il prompting.

Figura 10: Come formulare a Copilot la richiesta per la generazione di uno script

Analizzare la risposta ottenuta e procedere affinando la richiesta, ad esempio se ci si aspetta una grande quantità di dati richiedere a Copilot di analizzare la riposta fornita eseguendo le necessarie modifiche per migliorare le performance.

Figura 11: Analisi dello script ottenuto da Copilot per migliorare le performance

Completare la revisione dello script richiedendo a Copilot di inserire la gestione degli errori.

Figura 12: Revisione dello script generato da Copilot richiedendo di inserire la gestione degli errori

Richiedere a Copilot quali sono i requisti minimi in termini di versione di PowerShell per l’esecuzione dello script e nel caso sia necessario sarà possibile richiedere a Copilot di apportare le necessarie modifiche perché possa essere eseguito con la versione di PowerShell che si ha a disposizione nell’ambiente in cui lo script dovrà essere eseguito.

Figura 13: Verifica dei requisiti minimi in termini di versione di PowerShell dello script generato da Copilot

Considerazioni finali sulla generazione di script PowerShell tramite Copilot

Da quanto visto precedentemente e circa la conoscenza di PowerShell da parte di Copilot e su come gestire correttamente il prompting appare chiaro che:

  • Per ottenere una generazione efficace di uno script occorre avere la padronanza di PowerShell in modo da poter fornire dettagli implementativi efficaci
  • Copilot ci verrà in aiuto generando porzioni di codice facendo risparmiare del tempo, ma occorre avere la capacità di analizzare quanto viene prodotto e in caso di inesattezze o mancanze è necessario essere in grado di fornire a Copilt le corrette informazioni per migliore la risposta.

In sintesi Copilt deve essere visto come un aiutante molto preparato, ma non come un oracolo onnisciente. Copilot è uno strumento a cui demandare la creazione di codice che sappiamo scrivere, ma che ci avrebbe fatto spendere tempo che possiamo spendere più efficacemente concentrandoci su porzioni di codice più sofisticate. Un altro utilizzo di Copilot è quello di impiegarlo per richiedere di trovare approcci a porzioni di codice soffisticati per valutare se esistono approcci diversi da quelli che conosciamo ed eventualmente impiegarli in modo personalizzato, ma anche in questo caso la capacità di analizzare criticamente quanto fornito, ovvero una buona padronanza di PowerShell è imprescindibile.

Nel caso si desideri avere il supporto di Copilot integrato nel prompt di PowerShell è possibile valutare l’utilizzo di PowerShellAI, un progetto indipendente mantenuto da una community di sviluppatori che però non è ufficialmente supportato da Microsoft o OpenAI.

Per ulteriori approfondimenti su Copilot si vedano i seguenti articoli di Nicola Ferrini: