Il team di Microsoft ha annunciato il rilascio di PowerShell 7, la nuova major release della shell di riferimento per l'ecosistema Windows.
PowerShell 7 è disponibile oltre che per Windows anche per Linux e MacOS. Inoltre l'azienda di Redmond ha messo a disposizione delle comode immagini Docker già pronte all'uso. A comunicare la disponibilità della nuova versione è stato il Program Manager Joey Aiello sul blog ufficiale dell'azienda:
Oggi siamo felici di annunciare la disponibilità della versione stabile PowerShell 7.0. Prima di ogni altra cosa vogliamo ringraziare la nostra community di contributori, che hanno reso possibile questo rilascio tramite l'invio di feedback e patch.
Le nuove feature
PowerShell 7 è basato su .NET Core 3.1, ovvero l'ultima versione del framework di sviluppo software di Microsoft. Gli utenti potranno dunque sfruttate tutte le API integrate in .NET Core. Nel suo articolo Aiello ha elencato le novità più importanti introdotte in questa major release:
- pipeline parallelization con
ForEach-Object -Parallel
; - nuovo operatore ternario
a ? b : c
; - nuovi operatori Pipeline chain
||
e&&
; - layer di compatibilità che abilita il supporto all'importazione dei vecchi moduli nella Windows PowerShell session;
- supporto all'invocazione delle risorse DSC direttamente da PowerShell.
I Pipeline chain operator &&
e ||
sono qualcosa di molti simile agli operatori AND e OR presenti in altri emulatori di terminale come Bash o Zsh. Per fare un esempio, se nel terminale digitiamo:
Write-Output 'Primo' && Write-Output 'Secondo'
l'output sarà questo:
Primo
Secondo
L'operatore ternario, invece, si comporta come un'istruzione if-else
semplificata. Ternary è modellato sulla sintassi dell'operatore ternario presente nella sintassi di C#. Ad esempio:
$message = (Test-Path $path) ? "la patch esiste" : "patch non trovata"
Nel caso la patch esista verrà visualizzato il messaggio "la patch esiste", in caso contrario viene mostrato l'avviso "patch non trovata".
Che fine fa il vecchio PowerShell Core ?
PowerShell 7 è perfettamente retrocompatibile con le precedenti versioni dunque non è più necessario l'appellativo "Core". Tuttavia per questioni tecniche in alcuni contesti tale release sarà indicata come PowerShell 7 Core per differenziarla dalle altre versioni.