PowerShell si inizia

Da qualche tempo mi sono “intrippato” di PowerShell e mi sembra che in Italia non ci sia ancora la percezione del valore contenuto in PowerShell.
Come sviluppatore ho una prospettiva diversa da quella di un sistemista, come può averla https://www.pulsarit.net/cs/blogs/claudiog/ e cercherò di accentuarla.

Per chi non lo conosce diamo una prima definizione: PowerShell è una nuova shell per Windows. Una shell cioè un interprete di comandi, come cmd.exe o bash eccetera.

Cosa ha di nuovo rispetto altri interpreti di comandi? Diversi aspetti, alcuni generali, altri specifici della piattaforma Windows.

  1. Il concetto di tipo: a differenza di ksh, bash o anche cmd.exe, l'input e l'output di un comando non è un flusso indifferenziato di caratteri ma è un flusso di oggetti tipizzati
  2. L'idea di parser: i comandi vengono interpretati dalla shell e non dal comando stesso. Difatti un comando è, di norma, una classe .NET derivata da System.Management.Automation.PSCmdlet che ridefinisce il metodo ProcessRecord.
  3. L'integrazione: eseguibili esistenti, oggetti COM, classi WMI e classi .NET possono essere utilizzate da uno script PowerShell senza modifiche.

Che cos'ha di comune? Alcune deliberate scelte di compatibilità o di somiglianza con shell e linguaggi di programmazione esistenti. Il concetto di pipeline ha molto in comune con LINQ (o con SSIS se vogliamo): i comandi vengono istanziati e combinati insieme prima di essere eseguiti. Gli alias, strutture gerarchiche viste come filesystem virtuali, strutture dati primitive al linguaggio.

L'obiettivo di realizzare una shell interattiva spiega alcune peculiarità rispetto ad un linguaggio di programmazione interpretato come Python o Ruby, ad esempio il carattere $ che prefissa le variabili.

La prossima volta come si installa e alcuni esempi delle sue capacità per stimolare l'interesse.