Articles

Adam the Automator

Sei pronto ad eseguire l’aggiornamento a PowerShell 7 e ad avere accesso a tutte le nuove funzionalità? Se è così, questo articolo è per te.

Quando PowerShell 6 è stato rilasciato, era per portare una versione base di PowerShell a tutte le piattaforme (PowerShell Core). Con PowerShell 7 (che è l’ultima versione di PowerShell al momento della stesura di questo articolo), ora stiamo cercando che tutte le piattaforme siano uguali nel PowerShell che possono fornire (sia Windows PowerShell che PowerShell Core).

In questo articolo, imparerai come eseguire un aggiornamento di PowerShell 7 manualmente e come automatizzare il processo di aggiornamento andando avanti con distribuzioni di massa tramite GPO e PowerShell Remoting.

Al momento della stesura di questo articolo, l’attuale versione di PowerShell 7 è Preview 3. La maggior parte dei riferimenti in questo articolo si applica a questa versione.

Tabella dei contenuti

Come aggiornare la versione di PowerShell su una macchina

Come PowerShell Core 6.0, il processo per installare PowerShell Core 7 è simile. Vediamo alcuni modi diversi per installare PowerShell 7 su una singola macchina.

Prima di andare troppo avanti, vale la pena menzionare un paio di prerequisiti prima di installare PowerShell versione 7. Noterete che sono gli stessi requisiti che ci sono per PowerShell versione 6.

  • L’Universal C Runtime deve essere installato
  • Windows Management Framework (WMF) 4.0 o più recente – solo se siete su una versione di Windows 7 o Windows Server 2008R2. Le versioni successive di Windows come Windows 8.1, Windows 10 e Windows Server 2016, WMF non è richiesto.

Installare PowerShell 7 manualmente

Prima di tutto, scarica PowerShell 7. Per farlo, vai alla pagina GitHub Releases per PowerShell e trova la versione che vuoi installare. Per questo articolo, stiamo usando la versione PowerShell 7.0.0 preview 3. Su Windows, scorri un po’ verso il basso e scarica il PowerShell-7.0.0-preview.3-win-x86.msi pacchetto MSI ed eseguilo.

Schermo di benvenuto per l'installazione di PowerShell 7
Schermo di benvenuto per l’installazione di PowerShell 7

La procedura guidata ti farà alcune semplici domande come dove vuoi che PowerShell sia installato. Se vuoi eseguire più versioni di PowerShell fianco a fianco, assicurati di usare cartelle di installazione separate.

La procedura guidata ti chiederà anche se vuoi registrare PowerShell nella variabile d’ambiente PATH. Aggiungere la cartella di installazione di PowerShell alla variabile d’ambiente PATH ti permette di chiamare PowerShell da qualsiasi altro terminale come una diversa versione di PowerShell o anche cmd.exe.

Un’altra opzione è Registra PowerShell al manifesto di registrazione eventi di Windows. Quando abilitata, questa opzione sfrutta la robusta registrazione che viene fornita con questa versione di PowerShell.

In seguito, ti chiede se vuoi abilitare PowerShell Remoting fin dall’inizio, che può aiutare con tutte le attività remote.

Infine, ti verrà chiesto se vuoi aggiungere il menu contestuale ‘Apri qui’ a Explorer. Questa opzione ti permette di cliccare con il tasto destro del mouse su qualsiasi cartella durante la navigazione in Windows Explorer e aprire una finestra PowerShell all’interno di quella directory di lavoro.

Anche se gli ultimi due sono completamente opzionali e dipendono da te, ti consiglio vivamente di abilitare i primi due, così:

Scegliere i default nell'installazione di PowerShell 7
Scegliere i default nell’installazione di PowerShell 7

Una volta che hai risposto a tutte le loro domande, clicca su Next e l’installazione avrà inizio.

Aprire PowerShell 7

Una volta installato, è possibile eseguire PowerShell 7 aprendo un qualsiasi terminale a riga di comando e digitando pwsh-preview.

Nota che non potrai usare questo nome di comando una volta che la versione 7 di PowerShell sarà uscita dalla fase di “anteprima”. Una volta uscita dall’anteprima, potrai lanciare PowerShell 7 con pwsh.

Installare PowerShell 7 con PowerShell

Il team lead di Microsoft PowerShell, Steve Lee, ha twittato un modo pratico per installare PowerShell 7 usando la cmdlet Invoke-RestMethod di PowerShell. Questo snippet di codice utilizza il comando per interrogare il repository GitHub di PowerShell, scaricare uno script di installazione che poi scarica e installa PowerShell 7 con una sola riga.

Di seguito troverete la sintassi per farlo. Aprite una console Windows PowerShell ed eseguite il one-liner qui sotto.

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview"

Questo snippet di codice usa il cmdlet PowerShell Invoke-Expressioniex nel one-liner) per accettare una stringa ed eseguirla come codice PowerShell. Questa stringa chiama il Invoke-RestMethod cmdlet (irm nel one-liner) per scaricare lo script che Steve ha scritto. Raccomando vivamente di usare il link e controllare il codice prima di eseguire questo comando!

Lo snippet passa quindi i parametri UseMSI e Preview allo script per prendere e installare l’ultimo MSI.

Se volete eseguire questo script completamente silenzioso e non presidiato, potete usare il parametro Quiet. Al momento di questo scritto, il parametro Preview punta ancora a PowerShell 7 Preview 3.

Installare PowerShell 7 con un modulo

Un altro modo per installare PowerShell 7 è usare il modulo PowerShell di Jeff Hicks chiamato PSReleaseTools. Questo modulo, proprio come l’one-liner di Steve, aiuta a mantenere aggiornata la tua versione di PowerShell.

Con due righe di PowerShell, puoi scaricare il modulo con Install-Module e usando il comando Install-PSPreview che viene fornito con il modulo PSRelaseTools, puoi ottenere l’installazione di PowerShell 7 preview.

PS51> Install-Module -name PSReleaseTools -ForcePS51> Install-PSPreview -mode Quiet

Distribuire PowerShell 7 in un’organizzazione

Ci sono un paio di opzioni quando si tratta di distribuire PowerShell 7 su scala. Vediamo due modi comuni per farlo accadere.

Distribuire PowerShell 7 con un GPO

PowerShell è facile da distribuire via GPO poiché si presta facilmente ad altre tecnologie Microsoft mentre è confezionato come un MSI. Quando lo distribuisci tramite GPO ci sono alcune cose di cui vorrai essere consapevole.

Usa un GPO basato sul computer

Prima di tutto assicurati di usare una policy basata sul computer e non una policy basata sull’utente. Potete leggere di più sulle differenze tra queste due politiche qui. Sui server, il più delle volte, gli utenti non si collegano interattivamente, il che fa partire un deployment.

Se stai distribuendo PowerShell 7 a molti server, vorrai che il deployment avvenga indipendentemente dall’interazione dell’utente con la macchina.

Imposta una condivisione di file di rete

Assicurati anche che la condivisione di rete su cui hai messo il MSI di PowerShell 7 abbia i permessi appropriati impostati per permettere a tutti i server nel tuo ambiente di accedervi. Anche se al di là dello scopo di questo articolo, puoi trovare di più qui sulla creazione di condivisioni di file.

Imposta il GPO

Creerai quindi il tuo GPO con i seguenti passi:

  • Posiziona l’MSI nella condivisione di file assegnata a cui i tuoi computer possono accedere.
  • Crea un GPO iniziale nella Console di gestione dei criteri di gruppo. Potete leggere di più sulle GPO iniziali qui
  • Una volta creata la GPO, apritela e navigate su Configurazione computer -> Impostazioni software.
  • Fare clic con il tasto destro del mouse su Installazione software, quindi selezionare Nuovo -> Pacchetto.
  • Nella finestra di dialogo, aggiungere il percorso UNC completo al MSI. Per esempio, se una condivisione di file chiamata cartella è sul server.namef, il percorso sarebbe \server.name\folder\powershell-7.msi
  • Fai clic su Apri -> Assegnato -> OK.

Allega il GPO alle OU richieste

Una volta creato, allega il GPO alle OU richieste. Torna a controllare tra un paio d’ore e la distribuzione dovrebbe essere quasi completa.

Controlla il progresso dell’installazione del GPO

Se preferisci un approccio più pratico per controllare la tua distribuzione dei Criteri di gruppo, controlla questo breve script qui sotto che creerà un rapporto con l’oggetto Criteri di gruppo applicato ai computer in una specifica OU.

Assicuratevi di cambiare il nome distinto della OU (OU=Domain Controllers,DC=mylab,DC=local) con la vostra OU.

Nota che puoi eseguire questo su un controller di dominio o un computer unito al dominio con il modulo PowerShell ActiveDirectory installato.

$computers = Get-ADComputer -Filter * -SearchBase 'OU=Domain Controllers, DC=mylab, DC=local'ForEach ($computer in $computers) { Get-GPResultantSetOfPolicy -Computer $computer -ReportType HTML -Path c:\temp\$computer.html}

Se volete controllare a campione specifici server, il seguente comando vi sarà utile. Raggiunge un computer remoto ($computer) e controlla la versione di PowerShell installata su quel computer con $PSVersionTable.PSVersion.

PS> Invoke-Command -Computername $computer -Scriptblock {$PSVersionTable.psversion}

Infine, se si trova qualche computer che non ha la politica di gruppo applicata, è possibile eseguire il seguente comando e forzerà il refresh della politica di gruppo sul computer di destinazione:

PS> Invoke-GPUpdate -Computer $computer

Distribuzione di PowerShell 7 con PowerShell Remoting

Un altro ottimo modo per distribuire PowerShell a macchine remote è con PowerShell! Anche se questo può sembrare un po’ meta, PowerShell è un linguaggio di scripting abbastanza robusto da assistere nell’installazione del suo sostituto.

Prima di iniziare, assicurati che il remoting di PowerShell sia abilitato e che tu abbia impostato i permessi appropriati per eseguire comandi remoti nel tuo ambiente. Potete trovare una guida su come abilitare PSRemoting via GPO qui.

Siccome conoscete l’one-liner che per installare PowerShell coperto in precedenza, avrete bisogno di “avvolgere” quel comando in uno scriptblock e dire al comando Invoke-Command di eseguirlo su una o più macchine remote.

Di seguito è riportato un esempio di esecuzione di un elenco di computer memorizzati nell’array $computers e di esecuzione dello script install-powershell.ps1 su tutti loro.

$creds = $(Get-Credential)ForEach ($computer in $computers) { Invoke-Command -ComputerName $computer -Credential $creds {iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview -Quiet"}}

Riassunto

Ci sono molte ragioni per mantenere aggiornata la tua versione di PowerShell, almeno sulla tua macchina se non nell’ambiente di produzione. Sarai in grado di usare le ultime caratteristiche, trarre vantaggio dai miglioramenti delle prestazioni, e anche assicurarti che il tuo vecchio codice non si rompa sulle versioni più recenti.

Come puoi vedere, ci sono molti modi per scaricare e installare nuove versioni di PowerShell. Scegli il metodo che funziona per te nel tuo ambiente e continua a PowerShellin’!

Altre letture

  • Come controllare la versione di PowerShell (tutti i modi!)

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *