E’ stata da poco rilasciata l’ultima versione di Powershell Core: PowerShell 7.0 che si affianca, come la versione precedente a Windows PowerShell.
Windows PowerShell
Si tratta di un motore di scripting presente nativamente sui sistemi operativi Microsoft Windows sia nella versione core che in quella Desktop (GUI). Per verificarne la versione basterà eseguire questo comando:
Get-Host
Per avviarla ci sono due modi:
- Fare click su Start, digitare PowerShell e cliccare su Windows PowerShell;
- Fare click su Start, avviare il terminale cercando cmd.exe e una volta aperto digitare PowerShell
PowerShell 7.0
Si tratta di una edizione open source multipiattaforma di PowerShell creata per soluzioni ibride infatti è stata resa disponibile per Windows, Linux e Mac OS. Ciò significa avere la possibilità di sviluppare fra diversi sistemi operativi potendosi concentrare più sullo sviluppo che sulla piattaforma utilizzata. In particolare è possibile installarlo sui seguenti OS:
- Windows 8.1 e 10
- Windows Server 2012, 2012 R2 2016 e 2019
- Mac OS 10.13 +
- Red Hat Enterprise Linux (RHEL)/CentOS 7
- Fedora 30 +
- Debian 9
- Ubuntu LTS 16.04 +
- Alpine Linux 3.8 +
Inoltre PowerShell 7.0 comporta il passaggio a .NET Core 3.1 dando maggiore compatibilità con le versioni precedenti dei moduli Windows PowerShell esistenti.
Solo per Windows viene aggiunto un nuovo parametro opzionale UseWindowsPowerShell a Import-Module che creerà un modulo proxy in PowerShell 7 il quale usa un processo di Windows PowerShell locale per eseguire in modo implicito tutti i cmdlet contenuti nel modulo.
Installazione
Per eseguire l’installazione del pacchetto per la versione Windows sarà possibile farlo sia scaricando il file .msi (disponibile sul portale di GitHub) sia da riga di comando.
Le opzioni durante l’installazione sono abbastanza basilari e non presentano particolari difficoltà.
Invece per chi volesse eseguire l’installazine da Windows PowerShell dovrà copiare questa riga e incollarla nella scheda aperta:
iex “& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI”
Novità di Powershell 7.0
In questa versione sono state introdotte alcune funzionalità:
- Parallelizzazione della pipeline con ForEach-Object -Parallel
- Introdotti nuovi operatori:
- Ternario: a ? b : c
- Concatenamento delle pipeline: ||e &&
- Condizionali Null: ??e ??=
- Visualizzazione degli errori semplificata e dinamica e cmdlet Get-Error per semplificare l’analisi degli errori
- Livello di compatibilità che consente agli utenti di importare i moduli in una sessione implicita di Windows PowerShell
- Notifiche automatiche di nuove versioni
- La possibilità di richiamare le risorse DSC direttamente da PowerShell 7 (sperimentale)
Esecuzione perallela aggiunta a ForEach-Object
Il cmdlet ForEach-Object, che esegue l’iterazione degli elementi di una raccolta, include ora il parallelismo integrato con il nuovo parametro Parallel.
Di default i blocchi di script paralleli usano la directory di lavoro corrente del chiamante che ha avviato attività parallele.
Operatore ternario
Viene introdotto un operatore ternario che si comporta come un’istruzione if-else semplificata:
<condition> ? <if-true> : <if-false>
Viene valutata l’espressione <condition> e il risultato convertito in un valore booleano perciò l’espressione <if-true> viene eseguita se l’espressione <condition> è true altrimenti viene eseguita l’espressione <if-false>.
Operatori di concatenamento delle pipeline
Vengono ora implementati gli operatori && e || per concatenare le pipeline in modo condizionale. In PowerShell questi operatori sono chiamati “operatori di concatenamento delle pipeline” e sono simili agli operatori AND e OR in shell come Bash e Zsh e ai simboli di elaborazione condizionale nella shell dei comandi di Windows (cmd. exe).
L’operatore && esegue la pipeline di destra se la pipeline di sinistra ha avuto esito positivo. Viceversa, l’operatore || esegue la pipeline di destra se la pipeline di sinistra ha avuto esito negativo.
Operatori condizionali di valori Null
L’operatore di assegnazione condizionale di valori Null ??= assegna il valore dell’operando di destra all’operando di sinistra solo se l’operando di sinistra restituisce un valore Null. L’operatore ??= quindi non valuta l’operando di destra se l’operando di sinistra restituisce un valore non Null.
Nuova visualizzazione degli errori
La visualizzazione dei messaggi di errore è stata cambiata e migliorata per aumentare la leggibilità con una visualizzazione predefinita chiamata CoinciseView.
- Se un errore non è dovuto ad un errore di script o parser viene visualizzato un messaggio di errore a riga singola per esempio: Get-ChildItem: Cannot find path ‘C:\NotReal’ because it does not exist
- Se invece l’errore si presenta durante l’esecuzine dello script o è un errore di analisi PowerShell riporterà l’errore su più righe come il seguente
Nexsys è sempre all’avanguardia e aggiornata sulle novità riguardo le tecnologie Microsoft e sarà in grado di dare supporto a te e alla tua azienda attraverso un servizio di consulenza a 360 gradi o con corsi di formazione Windows Server 2019 o corsi di formazione Microsoft Office.