Microsoft PowerShell è stato tradizionalmente considerato un prodotto solo per Windows, ma non più. A partire da PowerShell v6, le funzionalità complete di PowerShell sono ora disponibili multipiattaforma con Linux come il più popolare.
In questo tutorial imparerai come iniziare da zero installando PowerShell su Ubuntu (altre distribuzioni Linux sono simili), come eseguire comandi e persino installare alcuni moduli.
Iniziamo!
Prerequisiti
Questo tutorial conterrà varie demo. Se desideri continuare, assicurati di avere quanto segue:
- Qualsiasi distribuzione Linux supportata:questo tutorial utilizza Peppermint 10, basato su Ubuntu 18.04 (LTS).
- Un account con accesso root.
Aggiornamento del repository dei pacchetti
Prima di passare all'installazione di PowerShell su Linux, devi prima aggiornare l'elenco dei repository di apt Package Manager. Alcune distribuzioni di Linux usano il gestore di pacchetti apt per installare i pacchetti apt; PowerShell è uno di questi.
Per garantire che apt possa trovare il pacchetto PowerShell e qualsiasi dipendenza durante il download, devi prima aggiornare l'elenco dei repository di pacchetti di apt. Per farlo, esegui [apt update](
.
sudo apt update
Installazione di PowerShell su Linux
Ora che hai aggiornato i repository dei pacchetti, è il momento di installare PowerShell su Linux. Poiché questo tutorial utilizza una distribuzione basata su Ubuntu, hai due modi diversi per installare PowerShell; utilizzando pacchetti snap o tramite .NET SDK.
Installazione di PowerShell tramite Snap Packages
Il modo più semplice per installare PowerShell su Ubuntu è tramite snap. Gli snap sono pacchetti che funzionano su diverse versioni e distribuzioni di Linux.
Per installare PowerShell su Linux tramite un pacchetto snap, apri un terminale ed esegui snap install
Comando Linux con sudo
diritti di utilizzo del nome del pacchetto snap di powershell
.
Per impostazione predefinita, i pacchetti snap hanno un ambito limitato per motivi di sicurezza. Specificando il
--classic
consente di apportare modifiche al sistema al di fuori della sandbox di sicurezza.
sudo snap install powershell --classic
Installazione di PowerShell tramite .NET SDK
1. A volte scoprirai che il pacchetto snap di PowerShell non contiene l'ultima versione di PowerShell. Quando ciò accade, puoi sempre optare per il percorso .NET SDK che verrà sempre aggiornato.
PowerShell è incluso in .NET Core, quindi quando installi .NET SDK, ottieni anche PowerShell!
Scarica e installa l'ultimo .NET SDK disponibile eseguendo il comando seguente utilizzando apt
gestore di pacchetti. Al momento della stesura di questo documento, l'ultimo pacchetto .NET SDK disponibile è v5.0.8. Puoi controllare l'ultima versione disponibile qui.
sudo apt install dotnet-sdk-5.0
2. Ora installa PowerShell tramite dotnet
applicazione utilizzando dotnet tool install
. Il dotnet tool
comando specifica un pacchetto NuGet in cui è contenuto PowerShell.
Specificando il --global
opzione, dotnet
installa il pacchetto PowerShell in ~\.dotnet\tools e assicura che la directory sia nel PATH di sistema in modo da poterla eseguire da qualsiasi luogo.
dotnet tool install --global PowerShell
Esecuzione dei comandi di base di PowerShell su Linux
Ora che hai PowerShell installato su Linux, cosa succede dopo? Iniziamo eseguendo alcuni comandi di base. Per avviare PowerShell, esegui semplicemente pwsh
e verrai inserito nella console interattiva di PowerShell.
Essendo un linguaggio di scripting multipiattaforma, PowerShell su Linux supporta tutti i comandi comunemente conosciuti da CMD e dalla shell della riga di comando di Linux come sudo apt update
. Non c'è bisogno di aprire un terminale Bash!
Da qui in poi puoi eseguire migliaia di comandi PowerShell integrati. Già che ci sei, controlla quale versione di PowerShell è installata utilizzando $PSVersionTable
. Dovresti vedere che PSEdition viene visualizzato come Core e Piattaforma è Unix .
Una volta terminato nella console di PowerShell, esci eseguendo exit
comando. Questo comando ti riporterà al tuo terminale Bash.
PowerShell su Linux Limitazioni
Solo perché puoi installare PowerShell ed eseguire comandi su di esso non significa necessariamente che puoi fare tutto il possibile su Windows. Dopotutto, essendo Linux Open Source, è un sistema operativo completamente diverso e alcuni comandi non saranno disponibili per funzionalità non disponibili in Linux.
Windows -ne Linux
Ad esempio, poiché Linux non ha un registro, non vedrai alcuna unità PowerShell. Il Get-PSDrive
cmdlet sarà ancora disponibile ma restituirà solo i volumi di archiviazione Linux montati e altre unità PS standard. Puoi vedere un esempio qui sotto.
Get-PSDrive | Format-Table -Auto
A differenza di Microsoft Windows, Linux non dispone né di Common Information Model (CIM) né di Strumentazione gestione Windows (WMI). Entrambi aiutano a fornire informazioni sulla gestione di dispositivi e applicazioni al sistema operativo Windows.
Di seguito puoi vedere che il cmdlet di Windows PowerShell Get-CimInstance
non è disponibile in PowerShell su Linux.
Get-CimInstance -ClassName Win32_BIOS
Ma se provi a usare Get-CimInstance
in Windows PowerShell, vedrai di seguito che funziona come previsto.
Nessun lavoro pianificato
Un altro svantaggio di PowerShell su Linux è la mancanza di processi pianificati. I lavori pianificati sono una funzione utile in Windows PowerShell che ti consente di eseguire attività in background tramite l'Utilità di pianificazione di Windows.
Per creare un processo pianificato in Windows PowerShell è necessario registrarsi il lavoro tramite il Register-ScheduledJob
cmdlet. Di seguito vedrai un esempio di copia di alcune cartelle di lavoro di Excel che funzionano in Windows PowerShell. Noterai che il Register-ScheduledJob
cmdlet non è stato trovato.
Anche se non puoi pianificare un lavoro, puoi comunque richiamare lavori in background utilizzando il Start-Job
comando. Il Start-Job
cmdlet consente di eseguire processi in background in PowerShell per eseguire un'attività senza alcuna interazione con la sessione corrente.
Forse ti piacerebbe elencare tutti i file in /var/backups ma fallo in background. Puoi creare il comando da eseguire in un ScriptBlock
e crea un lavoro chiamato GetAllBackupFiles
invocare con Start-Job
, come mostrato di seguito.
Start-Job -Name GetAllBackupFiles -ScriptBlock {Get-ChildItem /var/backups -Recurse}
Una volta avviato il lavoro in background, puoi ricevere l'output da quel lavoro utilizzando il Retrieve-Job
cmdlet specificando il -Name
che hai fornito all'avvio.
Retrieve-Job -Name GetAllBackupFiles
Lavorare con i moduli PowerShell su Linux
Un concetto importante in Windows PowerShell è il modulo PowerShell. I moduli PowerShell sono gruppi di comandi creati come "pacchetti" creati sia da Microsoft che tramite la community di PowerShell.
Trovare moduli installati
Per impostazione predefinita, PowerShell su Linux, come Windows, installa vari moduli. Trova tutti questi moduli eseguendo Get-Module
comando, come mostrato di seguito. Il ListAvailable
il parametro dice a Get-Module
per restituire tutti moduli sul filesystem; non solo moduli caricati.
Get-Module -ListAvailable
Di seguito puoi vedere che il Pester il modulo è installato in /root/.local/share/powershell/Modules che è la posizione dell'utente per i moduli di PowerShell. Imparerai come installare i moduli in una prossima sezione.
Puoi vedere ogni posizione in cui installare i moduli guardando il PSModulePath
variabile di ambiente, come mostrato di seguito. Dal valore di $env:PSModulePath
è una stringa, il tutorial utilizza split
operatore per dividere la stringa in due punti (non punto e virgola come Windows) per visualizzare ciascun percorso su una riga diversa.
$env:PSModulePath -split ':'
Installazione dei moduli PowerShell su Linux
Anche se PowerShell su Linux viene fornito con vari moduli già installati, è probabile che avrai bisogno di più funzionalità. Quando ciò accade, puoi sfruttare la Galleria di PowerShell. La Galleria PowerShell è un repository di migliaia di moduli che funzionano sia in Windows che in Linux.
Usando il Install-Module
cmdlet, puoi installare moduli su Linux proprio come su Windows. Ma prima dovresti trovare il modulo che stai cercando usando Find-Module
.
Diciamo che desideri eseguire alcuni test Pesters utilizzando il popolare framework di test Pester. Pester viene fornito confezionato in un modulo. Verifica se il modulo Pester è disponibile nella Galleria PowerShell utilizzando il Find-Module
cmdlet.
Find-Module Pester
Puoi vedere sotto quel Find-Module
trovato il modulo Pester disponibile.
Dopo aver verificato la disponibilità del modulo Pester, ora installa il modulo utilizzando il Install-Module
cmdlet che specifica il Name
del modulo.
Install-Module -Name Pester
Quando esegui Install-Module
, PowerShell ti chiederà di un repository non attendibile perché il repository è contrassegnato come non attendibile. Per il test, questo avviso non è nulla di cui preoccuparsi, quindi digita A per confermare.
Una volta che il modulo è stato installato, ora esegui il Get-InstalledModule
cmdlet e vedrai che Pester è stato installato e i suoi comandi sono ora disponibili.
Lo vedrai anche usando il Get-Command
cmdlet, puoi anche trovare tutti i comandi all'interno di Pester
modulo, come mostrato di seguito.
Get-Command -Module Pester
Esecuzione di script di PowerShell da Bash
Per concludere questo tutorial, finiamo con l'esecuzione di script PowerShell da Bash. Durante questo tutorial, hai eseguito in modo interattivo i comandi di PowerShell all'interno di una console di PowerShell. Se hai uno script di PowerShell che devi eseguire, non è necessario passare alla console di PowerShell. Invece, puoi eseguire lo script direttamente da Bash.
Per dimostrare l'esecuzione di uno script PowerShell da Bash, apri il tuo editor di testo Linux preferito e incolla il comando seguente e salva il file come DrivesInformation.ps1 . Questo script enumera semplicemente tutte le unità PS.
Get-PSDrive
Nel tuo terminale Bash, invece di eseguire pwsh
, premendo Invio e quindi eseguendo lo script all'interno della console di PowerShell, richiama lo script direttamente da Bash. Per fare ciò, esegui pwsh
di nuovo, ma questa volta specifica lo script di PowerShell che hai appena creato, come mostrato di seguito.
Vedrai che riceverai lo stesso output che avresti all'interno della sessione interattiva di PowerShell direttamente nel tuo terminale Bash.
pwsh /home/tex/DrivesInformation.ps1
Conclusione
Ora dovresti iniziare bene a eseguire PowerShell in Linux! Ora tocca a te iniziare a saperne di più su PowerShell e automatizzare tutto ciò che puoi!