Formazione e Tecnologia
Programmare con stile

Programmare con stile

Il tempo impiegato per svolgere un’attività è un fattore fondamentale, è sempre opportuno trovare una via che permetta di risparmiarlo, in un’escursione si cerca sempre di seguire l’itinerario che permette di raggiungere le tappe previste con il percorso più diretto e nel minor tempo.

Quando si programma si tende a scrivere il codice nel modo in cui passa per la mente, inserendo più volte le medesime sequenze di codice o eseguendo dopo quello che sarebbe meglio eseguire prima.

Il risultato finale è un codice che richiede microsecondi in più di processazione, che sommati ai microsecondi di altre procedure, fanno perdere del tempo processore e della memoria impiegata per il caricamento e l’esecuzione dello script.

In presenza di un RMM lo script realizzato deve essere, con ottimizzazioni diverse, trasferito al computer che lo deve eseguire, un’azione che richiede a sua volta dei secondi di sincronizzazione che potrebbero essere sfruttati per altre operazioni.

Da diversi anni realizziamo procedure in Powershell per svolgere diverse tipologie di operazioni ed in questi anni abbiamo sempre più cercato di realizzare del codice pulito e comprensibile.

In questo articolo scriveremo di come abbiamo impostato la realizzazione dei nostri script per ottenere il meglio da loro e dai dispositivi su cui vengono eseguiti.

Tabella dei Contenuti

La comprensione del codice

Sarebbe un falso dire che iniziamo a scrivere lo script seguendo dei rigidi formalismi, anche noi iniziamo a scrivere inserendo i cmdlet un po’ a caso, per iniziare a valutare gli output e il loro utilizzo.

Creato il primo nucleo dello script, una dozzina di righe di codice, e valutato che siamo sulla strada giusta per raggiungere l’obiettivo, andiamo ad inserire la sezione di commento, che con la sua struttura definita da Microsoft, permette di fornire informazioni attraverso l’uso del cmdlet get-help.

In questa sezione è possibile descrivere a cosa serve lo script, come funziona, quali sono i suoi parametri, quale è il suo output e degli esempi.

Un elemento basilare della programmazione è l’indentazione del codice (tipograficamente definito rientro), che permette di individuare in modo rapido se un’istruzione appartiene ad un blocco di una struttura e gli annidamenti. L’indentazione deve essere regolare, è importante stabilire quanti spazi anteporre alla riga per ogni blocco. Con questo semplice accorgimento abbiamo migliorato la leggibilità del codice.

LEGGI ANCHE -  Eseguire via script il reset dell’agente Axcient D2C

Un altro elemento importante è la nomenclatura usata per le variabili, leggere il nome di una variabile parlante permette di comprendere immediatamente a cosa si riferisce e quali sono i suoi contenuti. Un array denominato “ComputerInfo” conterrà delle informazioni relative al computer, se fosse chiamato “Array1” renderebbe necessario leggere il codice per comprendere di cosa si tratti. Per agevolare i processi mentali può essere una valida scelta quella di usare in diversi script il medesimo nome variabile per il medesimo contenuto.

Un altro suggerimento è quello di non utilizzare gli alias dei cmdlet, ma adottare il loro nome esteso, ad esempio l’utilizzo dell’alias wget potrebbe creare delle incomprensioni, infatti non si tratta del comando di origine Linux per le chiamate web, ma della forma breve del cmdlet Invoke-WebRequest, che assolve ad una funzione equivalente, ma in modo diverso.

Ultimo, ma non ultimo, è utile commentare il codice scritto nei suoi passaggi critici, questo per consentire a distanza di tempo di mettere mano alla procedura ricordando rapidamente il suo funzionamento e per permettere a successivi utilizzatori di comprenderne il flusso.

Le funzioni

È del tutto normale utilizzare più volte nel medesimo script del codice simile, che può essere ripetuto molte volte con la riscrittura di diverse righe di codice con variazioni minime. In questo caso è consigliabile analizzare la parte di codice ripetuta ed estrapolare la parte comune, per poi fornire le informazioni dinamiche attraverso degli argomenti, realizzando in questo modo una funzione. Questo espediente porta ad eliminare diverse decine di righe di codice, inoltre la funzione ottenuta diventa facilmente riutilizzabile in altri script.

Questa soluzione determina una drastica pulizia del codice, semplificando inoltre la manutenzione. Tuttavia, l’uso delle funzioni e la conseguente riduzione delle dimensioni dello script, non determina un effettivo risparmio di risorse, potrebbe infatti richiederne in aggiunta.

L’impiego delle funzioni è di grande aiuto, ma la modifica di una funzione in uno script potrebbe tradursi nella correzione di decine di script che la utilizzano.

I moduli

Le funzioni sono comode, ma vanno aggiornate in tutte le procedure dove sono state introdotte, a meno che si decida di modificare la funzione strada facendo senza modificarla negli script già realizzati. La soluzione può essere pratica, ma espone ad una serie di rischi. Potremmo rimettere mano ad un vecchio script e leggendo il nome della funziona usata nel codice, pensare che sia quella di ultima implementazione, per poi scoprire che la procedura si conclude con degli errori o peggio cancella un pezzo del disco.

LEGGI ANCHE -  Modificare da remoto la configurazione di base del power managment di windows

Utilizzando come versione minima di Powershell la 5.1 è possibile sfruttare un altro strumento, ovvero i moduli.

Il modulo al suo livello base è costituito dal codice da eseguire (psm1) e da un manifesto (psd1) che lo descrive. Nel file psm1 vengono incorporate le funzioni create, che possono essere suddivise in più moduli in base al loro impiego, ogni funzione dispone del proprio help, visualizzabile con il cmdlet Get-Help seguito dal nome della funzione.

Il modulo può essere inserito in un percorso generico di default, che è la scelta consigliata, o in un percorso specifico aggiunto allo scopo e registrato. La lista dei moduli presenti è visualizzabile con il cmdlet Get-Module -ListAvailable.

Per determinare i percorsi di default è sufficiente leggere la corrispondente variabile di ambiente $ENV: PSModulePath ($ENV:PSModulePath -split ‘;’), trovando i seguenti risultati:

  • C:\Users\<userprofile>\Documents\WindowsPowerShell\Modules – Moduli del utente corrente;
  • C:\Program Files\WindowsPowerShell\Modules – Moduli disponibili a tutti gli utenti (consigliato);
  • C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules – Percorso di Sistema di default.

La creazione del manifesto è agevolata dallo stesso linguaggio Powershell, infatti è disponibile il cmdlet New-ModuleManifest per la creazione e il cmdlet Update-ModuleManifest per la sua modifica.

I moduli possono essere caricati attraverso un RMM o i file relativi possono essere posizionati nella cartella definita nel percorso del sistema, è fondamentale che il nome della cartella e dei file contenuti sia uguale.

Questo approccio rende i moduli disponibili e li carica nella sessione che richiede l’impiego di uno dei cmdlet contenuti.

Nel caso di modifiche delle funzioni sarà sufficiente aggiornare sui sistemi gestiti il modulo relativo, senza dover lavorare gli script realizzati, inoltre gli script conterranno solo il codice necessario e disporranno sui sistemi delle funzioni necessarie.

Conclusioni

Gli step descritti portano a delle ottimizzazioni del codice, dove ogni step deve essere parte di quello successivo, per arrivare ad una sempre più efficiente operatività delle procedure e loro gestione nella manutenzione e nella ricerca di errori.

LEGGI ANCHE -  Creare le macchine virtuali Hyper-V attraverso Powershell

Arrivati ai moduli è possibile compiere ulteriori passi, per renderli meglio integrati nel sistema operativo e caricabili direttamente dal centro di distribuzione di Microsoft.

L’uso del modulo nella sua veste di base permette di avere a disposizione nel computer/server i cmdlet creati per le diverse necessità, una situazione che ne permette l’uso anche mentre si lavora direttamente sul sistema con la sua console Powershell.

Negli articoli successivi spiegheremo come configurare un modulo con uno script, la verifica della presenza dei moduli sui sistemi e la loro installazione e come ci muoviamo per eseguire gli aggiornamenti.

Per maggiori informazioni sull’uso e la realizzazione degli script di automazione leggi questo articolo e contattaci senza impegno.

I componenti distribuiti sono forniti senza alcuna garanzia. Non vi sono garanzie che il software soddisfi le vostre esigenze o sia esente da errori. In nessun caso gli sviluppatori saranno responsabili per eventuali danni.

I componenti proposti sono stati collaudati nel modo più esaustivo possibile e sono utilizzati in modo regolare in ambienti di produzione, durante il loro utilizzo non si sono verificate anomalie di funzionamento.

Archivi
Prossimi eventi

Non ci sono eventi imminenti.

Iscriviti alla nostra Newsletter
Seleziona lista (o più di una):
Manteniamo i tuoi dati privati e NON li condividiamo con terze parti. Per maggiori informazioni, consulta la nostra Privacy Policy.
Confermo di aver letto la Policy sul trattamento dei dati

Automatizzare in autonomia

Ecco come diventare autonomi nella realizzazione di procedure o come beneficiare di quanto già pronto all'uso.