Nonostante Windows PowerShell includa di per sè un ampio numero di cmdlet pronti all’uso, talvolta si rivela utile, se non indispensabile, crearne di nuovi; la necessità di creare cmdlet ad hoc è determinata, ad esempio, dal desiderio di sfruttare i meccanismi di interoperabilità con il codice nativo offerti da .NET oppure, più semplicemente, per compilare (e quindi rendere più performante) una funzione definita in precedenza all’interno di uno script PowerShell.
Nel prosieguo dell’articolo viene analizzata la creazione di un semplice cmdlet, passo dopo passo, provvedendo a commentare i punti di maggior interesse; naturalmente il lettore consideri che, poichè questo testo vuole essere un mero punto di partenza, per ulteriori approfondimenti si rimanda all'SDK di PowerShell.
Cos’è un cmdlet?
Un cmdlet, prononunciato “command-let”, è un termine specifico di PowerShell ed indica una tipologia di comando eseguibile all’interno della shell. La shell dispone infatti di quattro tipologie distinte di comando: cmdlet, funzioni, script ed eseguibili nativi Win32.
È possibile ottenere la lista dei cmdlet disponibili eseguendo questo blocco di codice all'interno della shell:
Get-Command –CommandType Cmdlet
Ottenendo un risultato simile a questo:
CommandType Name Definition
----------- ---- ----------
Cmdlet Add-Content Add-Content [-Path] <String[...
Cmdlet Add-History Add-History [[-InputObject] ...
Cmdlet Add-Member Add-Member [-MemberType] <PS...
Ciascun cmdlet è definito mediante una classe .NET che deriva da uno specifico tipo contenuto all’interno degli assembly di sistema di PowerShell. Poichè i cmdlet vengono dapprima compilati in una DLL e, successivamente, caricati nel processo di PowerShell quando la shell viene lanciata, questa categoria di comandi è probabilmente una tra le più performanti tra quelle disponibili e sicuramente la più conveniente in termini del rapporto performance / tempi di sviluppo.