PowerShell 7 rappresenta l’evoluzione moderna e multipiattaforma di Windows PowerShell. Basato sulle versioni più recenti di .NET, consente di automatizzare attività amministrative, sviluppare script più efficienti e utilizzare un unico ambiente di gestione su Windows, Linux e macOS.
Il passaggio da Windows PowerShell 5.1 a PowerShell 7 non consiste tuttavia in un semplice aggiornamento del programma. Le differenze nell’architettura .NET, nella disponibilità dei moduli, nel comportamento di alcuni cmdlet e nella gestione della compatibilità possono richiedere la revisione degli script e delle procedure amministrative esistenti.
PowerShell 7 è progettato per essere installato e utilizzato affiancato a Windows PowerShell 5.1. Questo permette alle organizzazioni di adottare gradualmente il nuovo ambiente, mantenendo temporaneamente Windows PowerShell per gli script o i moduli non ancora completamente compatibili.
Il corso fornisce le competenze necessarie per installare, configurare e utilizzare PowerShell 7, verificare la compatibilità degli script esistenti e pianificare una migrazione controllata da Windows PowerShell 5.1.
Particolare attenzione viene dedicata alle differenze tra le due piattaforme, alla compatibilità dei moduli, all’utilizzo della modalità Windows PowerShell Compatibility e alla modernizzazione degli script amministrativi.
Il corso è rivolto a:
- amministratori di sistema;
- sistemisti Windows;
- amministratori di Windows Server;
- tecnici help desk di livello avanzato;
- DevOps engineer;
- cloud administrator;
- professionisti IT che utilizzano PowerShell per l’automazione;
- sviluppatori e tecnici che mantengono script scritti per Windows PowerShell 5.1;
- responsabili IT che devono pianificare l’adozione di PowerShell 7.
Al termine del corso i partecipanti saranno in grado di:
- comprendere l’architettura e il posizionamento di PowerShell 7;
- distinguere PowerShell 7 da Windows PowerShell 5.1;
- installare e configurare PowerShell 7 su sistemi Windows;
- gestire la coesistenza tra
powershell.exe e pwsh.exe;
- utilizzare profili, moduli e repository;
- individuare le principali incompatibilità degli script esistenti;
- verificare la compatibilità dei moduli Microsoft e di terze parti;
- utilizzare i moduli di Windows PowerShell in modalità compatibilità;
- aggiornare script e funzioni sviluppati per Windows PowerShell 5.1;
- sfruttare le funzionalità introdotte nelle versioni moderne di PowerShell;
- migliorare robustezza, portabilità e manutenibilità degli script;
- definire un piano di migrazione progressiva verso PowerShell 7.
1. Da Windows PowerShell a PowerShell 7
- evoluzione di PowerShell;
- Windows PowerShell 5.1 e PowerShell 7;
- Windows PowerShell Desktop Edition;
- PowerShell Core Edition;
- differenze tra .NET Framework e .NET moderno;
- caratteristiche multipiattaforma;
- ciclo di rilascio e versioni LTS;
- criteri di supporto Microsoft;
- principali scenari di utilizzo di PowerShell 7;
- quando mantenere temporaneamente Windows PowerShell 5.1.
PowerShell 7 segue il ciclo di vita della versione di .NET sulla quale è costruito. Per gli ambienti aziendali è quindi importante conoscere la distinzione tra versioni standard e versioni Long-Term Support e mantenere installata una versione ancora supportata.
2. Installazione e configurazione di PowerShell 7
- requisiti di sistema;
- installazione mediante WinGet;
- installazione tramite pacchetto MSIX o MSI;
- installazione manuale tramite archivio ZIP;
- installazione automatizzata e non presidiata;
- aggiornamento mediante Microsoft Update;
- gestione centralizzata degli aggiornamenti;
- installazioni affiancate;
- percorsi di installazione;
- differenza tra
powershell.exe e pwsh.exe;
- verifica della versione installata;
- variabili di ambiente;
- configurazione iniziale della console;
- integrazione con Windows Terminal;
- configurazione di Visual Studio Code;
- estensione PowerShell per Visual Studio Code.
PowerShell 7 può essere installato tramite WinGet e può essere integrato nei processi aziendali di aggiornamento basati su Microsoft Update, Windows Update for Business, WSUS o Configuration Manager.
3. Ambiente di lavoro, profili e configurazione
- variabili automatiche;
$PSVersionTable;
- identificazione della PowerShell Edition;
- percorsi dei profili;
- profili utente e di sistema;
- differenze nei percorsi tra PowerShell 5.1 e PowerShell 7;
- configurazione del prompt;
- alias e funzioni personali;
- moduli caricati automaticamente;
- gestione della cronologia;
- configurazione mediante file
powershell.config.json;
- Execution Policy;
- sicurezza dell’ambiente di esecuzione;
- gestione delle impostazioni in ambienti condivisi.
4. Differenze tra Windows PowerShell 5.1 e PowerShell 7
- cmdlet disponibili e cmdlet rimossi;
- differenze nei moduli inclusi;
- modifiche al motore PowerShell;
- differenze nel comportamento della pipeline;
- differenze nei cmdlet Web;
- modifiche alla gestione degli errori;
- differenze nella serializzazione;
- cambiamenti nelle API .NET;
- gestione di tipi e metodi .NET;
- differenze nei percorsi e nelle variabili d’ambiente;
- codifica dei file;
- compatibilità degli script;
- compatibilità multipiattaforma;
- individuazione dei breaking change.
Le differenze principali derivano dal passaggio da .NET Framework al moderno runtime .NET e possono riguardare cmdlet, moduli, API e metodi .NET utilizzati direttamente dagli script.
5. Nuove funzionalità di scripting in PowerShell 7
- nuovi operatori;
- operatore null-coalescing
??;
- assegnazione null-coalescing
??=;
- operatori condizionali;
- pipeline chain operator
&& e ||;
- operatore ternario;
- gestione semplificata dei valori null;
- miglioramenti di
ForEach-Object;
- elaborazione parallela con
ForEach-Object -Parallel;
- nuovi parametri e comportamenti dei cmdlet;
- miglioramenti nella gestione degli errori;
$ErrorView;
- utilizzo di
Get-Error;
- gestione più leggibile delle eccezioni;
- miglioramenti delle prestazioni;
- criteri per utilizzare l’elaborazione parallela;
- rischi legati a concorrenza, risorse condivise e thread safety.
6. Moduli e compatibilità
- struttura dei moduli PowerShell;
- percorsi dei moduli;
$env:PSModulePath;
- installazione e aggiornamento dei moduli;
- PowerShell Gallery;
Find-Module;
Install-Module;
Update-Module;
- moduli compatibili nativamente con PowerShell 7;
- moduli progettati per Windows PowerShell;
- verifica della compatibilità;
- proprietà
CompatiblePSEditions;
- dipendenze da .NET Framework;
- moduli Microsoft e moduli di terze parti;
- gestione delle versioni dei moduli;
- utilizzo di versioni parallele;
- strategie di test.
Microsoft pubblica e aggiorna specifiche informazioni di compatibilità per moduli quali Azure PowerShell, Microsoft Graph PowerShell SDK, Exchange Online Management, moduli di gestione Windows e SQL Server.
7. Windows PowerShell Compatibility
- finalità della modalità compatibilità;
- importazione dei moduli tramite
-UseWindowsPowerShell;
- funzionamento mediante implicit remoting;
- sessione Windows PowerShell in background;
- proxy module;
- oggetti serializzati e deserializzati;
- limitazioni degli oggetti restituiti;
- perdita di metodi sugli oggetti remoti;
- esecuzione dell’intera pipeline nella sessione Windows PowerShell;
- gestione dei conflitti tra cmdlet;
- command clobbering;
- moduli esclusi dalla compatibilità;
- configurazione della deny list;
- criteri per utilizzare o evitare la modalità compatibilità.
La funzionalità Windows PowerShell Compatibility utilizza implicit remoting per caricare in PowerShell 7 moduli che richiedono ancora Windows PowerShell. Gli oggetti restituiti possono però essere deserializzati e non conservare tutti i metodi disponibili nella sessione originale.
8. Analisi e migrazione degli script esistenti
- inventario degli script PowerShell presenti;
- classificazione per criticità;
- individuazione di moduli e dipendenze;
- ricerca dei cmdlet non disponibili;
- identificazione delle chiamate a .NET Framework;
- analisi dei percorsi hard-coded;
- gestione delle differenze tra sistemi operativi;
- verifica della codifica dei file;
- controllo delle dipendenze esterne;
- utilizzo di
$PSVersionTable;
- utilizzo di
$PSEdition;
- condizioni per l’esecuzione su versioni differenti;
- refactoring degli script;
- eliminazione di alias e sintassi ambigue;
- utilizzo di nomi completi dei cmdlet;
- gestione robusta degli errori;
- logging e tracciamento;
- test in PowerShell 5.1 e PowerShell 7;
- rollback e gestione delle anomalie.
9. Scripting multipiattaforma
- principi di portabilità;
- gestione dei percorsi con
Join-Path;
- directory separator;
- variabili d’ambiente;
- differenze tra file system;
- comandi nativi Windows, Linux e macOS;
- verifica del sistema operativo;
- variabili
$IsWindows, $IsLinux e $IsMacOS;
- gestione della distinzione tra maiuscole e minuscole;
- codifica dei file;
- utilizzo di API .NET multipiattaforma;
- creazione di script eseguibili in ambienti diversi;
- limiti della portabilità per gli script di amministrazione Windows.
10. Remoting e amministrazione remota
- principi del PowerShell Remoting;
- differenze tra Windows PowerShell e PowerShell 7;
- remoting tramite WSMan;
- remoting tramite SSH;
- configurazione degli endpoint;
- sessioni persistenti;
New-PSSession;
Enter-PSSession;
Invoke-Command;
- autenticazione e credenziali;
- amministrazione remota multipiattaforma;
- compatibilità con gli endpoint Windows PowerShell;
- considerazioni di sicurezza.
11. Strategia di migrazione aziendale
- definizione del perimetro della migrazione;
- inventario di script, moduli e automazioni;
- distinzione tra script standard e script critici;
- definizione dell’ambiente di test;
- installazione side-by-side;
- test di regressione;
- gestione delle dipendenze;
- aggiornamento dei moduli;
- migrazione progressiva;
- documentazione delle eccezioni;
- mantenimento temporaneo di Windows PowerShell 5.1;
- aggiornamento delle attività pianificate;
- aggiornamento dei sistemi di deployment;
- distribuzione centralizzata di PowerShell 7;
- gestione delle versioni;
- procedure di rollback;
- criteri di dismissione degli script legacy.
- Il corso si svolgerà in modalità online live streaming, con il docente che terrà le lezioni in diretta.
- I partecipanti dovranno avere a disposizione un Personal Computer e preferibilmente un secondo schermo.
- Saranno forniti labs online che vengono messi a disposizione anche dopo la fine del corso per 3 mesi.
- Al termine del corso, coloro che avranno partecipato ad almeno l'80% delle lezioni riceveranno un attestato di frequenza.
È richiesta una conoscenza di base o intermedia di PowerShell.
I partecipanti dovrebbero conoscere almeno:
- cmdlet e sintassi fondamentale di PowerShell;
- variabili, operatori e pipeline;
- oggetti PowerShell;
- strutture condizionali e cicli;
- esecuzione e modifica di semplici script;
- amministrazione di base dei sistemi Windows.
Il corso non è pensato come introduzione assoluta a PowerShell. Per chi non possiede esperienza precedente è consigliabile frequentare prima un corso di PowerShell per amministratori di sistema.