venerdì 8 febbraio 2019

Utilizzare una funzione definita in un file di Powershell


Buongiorno a tutti e benvenuti nuovamente nel mio blog!
Capita spesso, in programmazione e così anche negli script, di creare delle funzioni generiche che ci piacerebbe riutilizzare.

Nei linguaggi di scripting, tuttavia, non sempre è intuitivo capire come “includere” le definizioni di funzioni: ogni linguaggio ha il suo “dialetto”…

Ecco, in breve, come sfruttare questa buona pratica di programmazione, il riutilizzo del codice, con powershell.

Supponiamo, ad esempio, di aver scritto questa funzione dentro un file “FUNZIONI.ps1”:

function echoMyName($user){
      write-host "Ciao, $($user.Name), questo e' il tuo nome e quest'altro e' il tuo ufficio: $($user.Office) "
}

… e di volerla riutilizzare per la nostra amministrazione via powershell o in nuovi script, per riutilizzo del codice (ottima pratica).
Quindi? Ecco qui di seguito alcuni trick per farlo:

Richiamare una function dal file da linea di comando shell

È presto fatto, basta ricordarsi una notazione un po’ particolare. Dobbiamo cominciare con una & e una parentesi graffa, dentro quest’ultima un punto prima del percorso del file che contiene la funzione, quindi il percorso, un punto e virgola (che separa il comando successivo) e
·         La & serve per indicare a powershell che stiamo per eseguire un comando.
·         La parentesi graffa serve per “racchiudere” i comandi in un unico “set di comandi”.
·         Il punto serve per indicare che vogliamo “eseguire” il file PS1 (che conterrà solo definizioni di funzione, quindi non avrà alcun output).
Mi raccomando lo spazio tra il primo punto e il percorso del file
Come di seguito:

& { ..\Funzioni.ps1”;  echoMyName((get-aduser DiegoC))}



Come usare una funzione powershell scritta in un file, su di un loop

Per utilizzare una funzione powershell da un file, però sugli oggetti di un loop, magari i risultati in una collection derivanti da un comando che  abbiamo lanciato.
Per farlo è sufficiente includere i comandi dentro le graffe all’interno di quelle del foreach o del for, così:
get-Aduser -Filter*| foreach { ..\Funzioni.ps1”;  echoMyName($_) }



Come includere un file .ps1 che contiene delle funzioni

Per includere ed usare, in uno script powershell, delle funzioni che avete definito in UN ALTRO file…
È sufficiente usare questa notazione:
. ".\FUNZIONI.ps1"
Da quel momento in avanti potrete usare le funzioni che avete scritto


Bene, spero di aver solleticato anche oggi un po’ la vostra fantasia…
Happy Scripting a tutti!

Nessun commento:

Posta un commento

I commenti sono soggetti a moderazione, prima di essere pubblicati.

Qualsiasi contenuto illecito, immorale o che io ritenga (arbitrariamente) offensivo od inappropriato, verrà cancellato.