Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali

Storicamente, le utilità da riga di comando nei sistemi Unix sono state sviluppate meglio rispetto a Windows, tuttavia, con l'arrivo della nuova soluzione, la situazione è cambiata.

Windows PowerShell consente agli amministratori di sistema di automatizzare la maggior parte delle attività quotidiane. Con essa, è possibile modificare le impostazioni, arrestare e avviare servizi, oltre a gestire la maggior parte delle applicazioni installate. Considerare la finestra blu come un altro interprete di comandi sarebbe errato. Questo approccio non riflette la vera essenza delle innovazioni proposte da Microsoft. In realtà, le capacità di Windows PowerShell sono molto più ampie: in un breve ciclo di articoli cercheremo di capire come la soluzione di Microsoft si differenzi dai mezzi a noi più familiari.

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali

Caratteristiche principali 

Naturalmente, Windows PowerShell è principalmente una shell di comando con un linguaggio di scripting, originariamente creata sulla base della piattaforma .NET Framework e successivamente su .NET Core. A differenza delle shell che ricevono e restituiscono dati testuali, Windows PowerShell lavora con classi .NET, che dispongono di proprietà e metodi. PowerShell consente di eseguire comandi convenzionali e offre accesso agli oggetti COM, WMI e ADSI. Viene utilizzato vari repository, come il file system o il registro di Windows, per accedervi sono stati creati dei cosiddetti fornitori. È interessante notare la possibilità di incorporare componenti eseguibili di PowerShell in altre applicazioni per eseguire diverse operazioni, anche tramite interfaccia grafica. Lo stesso vale al contrario: molte applicazioni per Windows offrono accesso alle proprie interfacce di gestione tramite PowerShell. 

Windows PowerShell consente di:

  • Modificare le impostazioni del sistema operativo;
  • Gestire servizi e processi;
  • Configurare ruoli e componenti del server;
  • Installare software;
  • Gestire il software installato tramite interfacce speciali;
  • Incorporare componenti eseguibili in programmi di terze parti;
  • Creare script per automatizzare compiti di amministrazione;
  • Lavorare con il file system, il registro di Windows, il repository dei certificati, ecc.

Shell e ambiente di sviluppo

Windows PowerShell esiste in due forme: oltre all'emulatore della console con il prompt dei comandi, c'è l'ambiente integrato di scripting (Integrated Scripting Environment - ISE). Per accedere all'interfaccia della riga di comando è sufficiente selezionare l'icona corrispondente nel menu di Windows o avviare powershell.exe dal menu "Esegui". Sullo schermo apparirà una finestra blu, che si differenzia notevolmente per funzionalità dal vetusto cmd.exe. Qui trovi l'autocompletamento e altre funzionalità familiari agli utenti delle shell di comando nei sistemi Unix.

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali

Per utilizzare la shell è necessario ricordare alcune combinazioni di tasti:

  • Le frecce su e giù scorrono la cronologia per ripetere i comandi precedentemente inseriti;
  • La freccia a destra alla fine della riga reinserisce il comando precedente carattere per carattere;
  • Ctrl+Home elimina il testo inserito dalla posizione del cursore all'inizio della riga;
  • Ctrl+End elimina il testo dal cursore fino alla fine della riga.

F7 mostra una finestra con i comandi precedentemente inseriti e consente di scegliere uno di essi. Nella console è anche possibile selezionare il testo con il mouse, copiare e incollare, posizionare il cursore e fare eliminazioni, backspace — tutto come piace a noi.

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali
Windows PowerShell ISE è un ambiente di sviluppo completo con un editor di codice che supporta le schede e l'evidenziazione della sintassi, un costruttore di comandi, un debugger integrato e altre utilità per programmatori. Se nel tuo editor di ambiente di sviluppo scrivi un trattino dopo il nome di un comando, otterrai un elenco a discesa di tutti i parametri disponibili con l'indicazione del tipo. Puoi avviare PowerShell ISE tramite l'icona nel menu di sistema o utilizzando il file eseguibile powershell_ise.exe.

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali

Cmdlet 

In Windows PowerShell sono apparsi i cosiddetti cmdlet. Si tratta di classi specializzate .NET che racchiudono una varietà di funzionalità. Si chiamano secondo il principio "Azione-Oggetto" (o "Verbo-Sostantivo", se preferisci) e la combinazione separata da un trattino ricorda il predicato e il soggetto nelle frasi delle lingue naturali. Ad esempio, Get-Help significa letteralmente "Ottieni-Aiuto" o, nel contesto di PowerShell: "Mostra-Assistenza". In sostanza, è l'equivalente del comando man nei sistemi Unix e i manuali in PowerShell devono essere richiesti in questo modo, piuttosto che invocando cmdlet con l'opzione —help o \/?. Non dimenticare nemmeno la documentazione online per PowerShell: Microsoft fornisce dettagliate informazioni a riguardo.

Oltre a Get, nei cmdlet vengono utilizzati anche altri verbi (e non solo verbi, a dire il vero) per indicare le azioni. Nella lista qui sotto forniremo alcuni esempi:

Aggiungi — aggiungere;
Cancella — pulire;
Abilita — attivare;
Disabilita — disattivare;
Nuovo — creare;
Rimuovi — eliminare;
Imposta — configurare;
Avvia — avviare;
Ferma — fermare;
Export — esportare;
Importa — importare.

Ci sono cmdlet di sistema, cmdlet utente e cmdlet opzionali: al termine dell'esecuzione, tutti restituiscono un oggetto o un array di oggetti. Non sono sensibili al maiuscolo, cioè, dal punto di vista dell'interprete dei comandi, non c'è differenza tra Get-Help e get-help. Il separatore è il simbolo ';', ma deve essere utilizzato solo se si eseguono più cmdlet in una singola riga. 

I cmdlet di Windows PowerShell sono raggruppati in moduli (NetTCPIP, Hyper-V, ecc.), e per cercare un oggetto e un'azione c'è il cmdlet Get-Command. Puoi visualizzare la guida su di esso in questo modo:

Get-Help Get-Command

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali

Per impostazione predefinita, il comando mostra una sintesi della guida, ma è possibile passare parametri (argomenti) ai cmdlet quando necessario. Con questi è possibile, ad esempio, ottenere una guida dettagliata (parametro -Detailed) o completa (parametro -Full), così come mostrare esempi (parametro -Examples):

Get-Help Get-Command -Examples

La guida in Windows PowerShell viene aggiornata dal cmdlet Update-Help. Se la riga dei comandi diventa troppo lunga, gli argomenti del cmdlet possono essere spostati sulla riga successiva scrivendo il carattere di continuazione ‘`’ e premendo Invio — non sarà sufficiente terminare di scrivere il comando su una riga e proseguire su un'altra.

Di seguito riportiamo alcuni esempi di cmdlet comuni: 

Get-Process — mostrare i processi in esecuzione nel sistema;
Get-Service — mostrare i servizi e il loro stato;
Get-Content — visualizzare il contenuto di un file.

Per i cmdlet e le utility esterne frequentemente utilizzati in Windows PowerShell ci sono alias abbreviati. Ad esempio, dir è l'alias di Get-ChildItem. Ci sono anche alias per i comandi dei sistemi Unix (ls, ps, ecc.), mentre il cmdlet Get-Help può essere richiamato con il comando help. L'elenco completo degli alias può essere visualizzato tramite il cmdlet Get-Alias:

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali

Skript, funzioni, moduli e linguaggio PowerShell

Gli script di Windows PowerShell sono conservati sotto forma di semplici file di testo con estensione .ps1. Non possono essere avviati con un doppio clic: è necessario fare clic con il tasto destro del mouse per aprire il menu contestuale e selezionare l'opzione «Esegui in PowerShell». Dalla console bisogna specificare il percorso completo dello script oppure navigare nella cartella corrispondente e digitare il nome del file. L'esecuzione degli script è anche limitata da una politica di sistema, e per verificare le impostazioni attuali si può utilizzare il cmdlet Get-ExecutionPolicy, che restituirà uno dei seguenti valori:

Restricted — l'esecuzione degli script è vietata (predefinito);
AllSigned — è consentita solo l'esecuzione di script firmati da uno sviluppatore affidabile;
RemoteSigned — è consentita l'esecuzione di script firmati e propri;
Unrestricted — è consentita l'esecuzione di qualsiasi script.

L'amministratore ha due opzioni. La più sicura prevede la firma degli script, ma è un'operazione piuttosto complessa — ci occuperemo di questo nei prossimi articoli. Per ora, seguiamo la via di minor resistenza e modifichiamo la politica:

Set-ExecutionPolicy RemoteSigned

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali
PowerShell deve essere avviato con diritti di amministratore, anche se con un apposito parametro è possibile modificare la politica per l'utente corrente.

Gli script sono scritti in un linguaggio di programmazione orientato agli oggetti, le cui comandi sono denominati secondo lo stesso principio degli cmdlet precedentemente esaminati: «Azione-Oggetto» («Verbo-Sostantivo»). Il suo scopo principale è l'automazione delle attività di amministrazione, ma è un linguaggio interpretato completo, con tutte le strutture necessarie: salti condizionali, cicli, variabili, array, oggetti, gestione degli errori, ecc. Per scrivere gli script si può usare qualsiasi editor di testo, ma è più comodo avviare Windows PowerShell ISE.

È possibile passare parametri agli script, rendendoli obbligatori e specificando valori predefiniti. Inoltre, Windows PowerShell consente di creare funzioni e richiamarle esattamente come i cmdlet: per questo si utilizza la sintassi Function e le parentesi graffe. Uno script con funzioni è chiamato modulo ed ha estensione .psm1. I moduli devono essere conservati in cartelle definite nelle variabili d'ambiente di PowerShell. Si possono visualizzare con il seguente comando:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Nastri trasportatori

Nell'ultimo esempio abbiamo utilizzato una struttura familiare agli utenti delle shell dei sistemi Unix. In Windows PowerShell, il carattere verticale consente anche di passare l'uscita di un comando all'ingresso di un altro, ma ci sono differenze significative nell'implementazione della pipeline: qui non si tratta di una serie di caratteri o di un testo. I cmdlet incorporati o le funzioni personalizzate restituiscono oggetti o array di oggetti e possono anche riceverli in input. Come nella Bourne shell e nei suoi numerosi successori, in PowerShell l'uso della pipeline semplifica l'esecuzione di compiti complessi.

Un esempio semplice di pipeline appare così:

Get-Service | Sort-Object -property Status

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali
Innanzitutto, viene eseguito il cmdlet Get-Service, poi tutti i servizi ottenuti vengono passati al cmdlet Sort-Object per essere ordinati in base alla proprietà Status. A seconda del tipo, il risultato del segmento precedente della pipeline viene passato a un argomento specifico — di solito è InputObject. Questo argomento sarà trattato più dettagliatamente in un articolo dedicato al linguaggio di programmazione PowerShell. 

Se lo si desidera, è possibile continuare la catena e passare il risultato del lavoro di Sort-Object a un altro cmdlet (verranno eseguiti da sinistra a destra). Inoltre, agli utenti di Windows è disponibile la struttura familiare a tutti coloro che utilizzano Unix per l'output paginato: 

Get-Service | Sort-Object -property Status | more

Esecuzione di attività in background 

Spesso è necessario avviare un comando in background per non dover attendere il risultato dell'esecuzione nella sessione della shell. In Windows PowerShell ci sono diversi cmdlet per questi casi:

Start-Job — avvia un'attività in background;
Stop-Job — ferma un'attività in background;
Get-Job — visualizza l'elenco delle attività in background;
Receive-Job — visualizza il risultato dell'esecuzione di un'attività in background;
Remove-Job — rimuove un'attività in background;
Wait-Job — riporta un'attività in background nella console.

Per avviare un'attività in background utilizziamo il cmdlet Start-Job e nelle parentesi graffe indichiamo un comando o un insieme di comandi:

Start-Job {Get-Service}

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali
Con le attività in background in Windows PowerShell si possono manipolare conoscendo i loro nomi. Iniziamo imparando a visualizzarli:

Get-Job

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali
Adesso mostriamo il risultato dell'esecuzione dell'attività Job1:

Receive-Job Job1 | more

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali
È tutto piuttosto semplice.

Esecuzione remota dei comandi

Windows PowerShell consente di eseguire comandi e script non solo su computer locali, ma anche su computer remoti e persino su un intero gruppo di macchine. Esistono diversi modi per farlo:

  • Molti cmdlet hanno il parametro -ComputerName, ma in questo modo non è possibile, ad esempio, creare una pipeline;
  • Il cmdlet Enter-PSSession permette di creare una sessione interattiva su una macchina remota; 
  • Con il cmdlet Invoke-Command è possibile eseguire comandi o script su uno o più computer remoti.

Versioni di PowerShell

Da quando è stata lanciata la prima versione nel 2006, PowerShell è cambiato notevolmente. Lo strumento è disponibile per molti sistemi operativi che girano su diverse piattaforme hardware (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux e OS X. L'ultima versione, la 6.2, è stata rilasciata il 10 gennaio 2018. Gli script scritti per versioni precedenti funzioneranno con alta probabilità in versioni più recenti, mentre il passaggio inverso può presentare problemi a causa del gran numero di nuovi cmdlet introdotti nel corso degli anni. La versione della shell dei comandi installata sul computer può essere verificata utilizzando la proprietà PSVersion della variabile incorporata $PSVersionTable:

$PSVersionTable.PSVersion

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali
È possibile anche utilizzare il cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali
Lo stesso vale anche per il cmdlet Get-Host. In realtà ci sono molte opzioni, ma per usarle è necessario studiare il linguaggio di programmazione PowerShell, e questo sarà il nostro argomento nella prossima articolo

Conclusioni 

Microsoft è riuscita a creare una shell dei comandi realmente potente con un ambiente integrato comodo per lo sviluppo di script. A differenza degli strumenti che conosciamo nel mondo Unix, presenta una profonda integrazione con i sistemi operativi della famiglia Windows, così come con il software e la piattaforma .NET Core. PowerShell può essere considerata una shell orientata agli oggetti, poiché i cmdlet e le funzioni personalizzate restituiscono oggetti o array di oggetti e possono riceverli come input. Pensiamo che questo strumento debba essere padroneggiato da tutti gli amministratori di server su Windows: è finito il tempo in cui potevano fare a meno della riga di comando. Una shell console avanzata è particolarmente necessaria sui nostri VPS economici, che girano su Windows Server Core, ma questa è un'altra storia.

Che cos'è Windows PowerShell e a cosa serve? Parte 1: funzionalità principali

Solo gli utenti registrati possono partecipare al sondaggio. Accedi, per favore.

Quali argomenti dovremmo trattare prima nelle prossime articoli della serie?

  • 53,2%Programmazione in PowerShell123

  • 42,4%Funzioni e moduli PowerShell98

  • 22,1%Come firmare i propri script?51

  • 12,1%Lavorare con gli archivi tramite i provider (providers)28

  • 57,6%Automazione dell'amministrazione dei computer con PowerShell133

  • 30,7%Gestione del software e integrazione dei componenti eseguibili di PowerShell in prodotti di terze parti71

231 utenti hanno votato. 37 utenti si sono astenuti.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster