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

 

screen powershell 7.0 command 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à.

setup powershell image

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”
powershell downloading

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: ????=
  • 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
powershell error

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.

Apri la chat
1
Possiamo aiutarti?
Ciao 👋
Possiamo aiutarti?
X