Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali

Storicamente, le utilità della riga di comando sui sistemi Unix sono sviluppate meglio che su Windows, ma con l'avvento di una nuova soluzione la situazione è cambiata.

Windows PowerShell consente agli amministratori di sistema di automatizzare la maggior parte delle attività di routine. Con il suo aiuto, puoi modificare le impostazioni, interrompere e avviare i servizi e anche eseguire la manutenzione della maggior parte delle applicazioni installate. Sarebbe sbagliato percepire la finestra blu come un altro interprete di comandi. Questo approccio non riflette l'essenza delle innovazioni proposte da Microsoft. Le potenzialità di Windows PowerShell, infatti, sono molto più ampie: in una breve serie di articoli cercheremo di capire in cosa differisce la soluzione Microsoft dagli strumenti a noi più familiari.

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali

Caratteristiche principali 

Naturalmente, Windows PowerShell è principalmente una shell di scripting, originariamente basata su .NET Framework e successivamente su .NET Core. A differenza delle shell che accettano e restituiscono dati di testo, Windows PowerShell funziona con classi .NET dotate di proprietà e metodi. PowerShell ti consente di eseguire comandi comuni e ti dà anche accesso a oggetti COM, WMI e ADSI. Utilizza diversi archivi, come il file system o il registro di Windows, per l'accesso ai quali i cosiddetti. fornitori. Vale la pena notare la possibilità di incorporare componenti eseguibili di PowerShell in altre applicazioni per implementare varie operazioni, incl. tramite interfaccia grafica. È vero anche il contrario: molte applicazioni Windows forniscono l'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;
  • Installa il software;
  • Gestire il software installato tramite apposite interfacce;
  • Incorporare componenti eseguibili in programmi di terze parti;
  • Creare script per automatizzare le attività amministrative;
  • Lavora con il file system, il registro di Windows, l'archivio certificati, ecc.

Shell e ambiente di sviluppo

Windows PowerShell esiste in due forme: oltre all'emulatore di console con una shell dei comandi, esiste un ambiente di scripting integrato (ISE). Per accedere all'interfaccia della riga di comando, seleziona semplicemente il collegamento appropriato dal menu Windows o esegui powershell.exe dal menu Esegui. Sullo schermo apparirà una finestra blu, notevolmente diversa nelle funzionalità dall'antidiluviano cmd.exe. Sono disponibili il completamento automatico e altre funzionalità familiari agli utenti delle shell dei comandi per i sistemi Unix.

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali

Per lavorare con la shell, devi ricordare alcune scorciatoie da tastiera:

  • Le frecce su e giù scorrono la cronologia per ripetere i comandi digitati in precedenza;
  • La freccia destra alla fine della riga riscrive il comando precedente carattere per carattere;
  • Ctrl+Home cancella il testo digitato dalla posizione del cursore all'inizio della riga;
  • Ctrl+Fine cancella il testo dal cursore fino alla fine della riga.

F7 mostra una finestra con i comandi immessi e consente di selezionarne uno. La console funziona anche selezionando il testo con il mouse, copia-incolla, posizionando il cursore, cancellando, backspace: tutto ciò che amiamo.

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali
Windows PowerShell ISE è un ambiente di sviluppo completo con un editor di codice a schede e con sintassi evidenziata, generatore di comandi, debugger integrato e altri piaceri della programmazione. Se scrivi un trattino dopo il nome del comando nell'editor dell'ambiente di sviluppo, otterrai tutte le opzioni disponibili nell'elenco a discesa con l'indicazione del tipo. È possibile avviare PowerShell ISE tramite un collegamento dal menu di sistema o utilizzando il file eseguibile powershell_ise.exe.

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali

Cmdlet 

In Windows PowerShell, il cosiddetto. cmdlet. Si tratta di classi .NET specializzate che forniscono una varietà di funzionalità. Sono denominati secondo il principio “Azione-Oggetto” (o “Verbo-Sostantivo, se preferisci), e il connettivo separato da trattino assomiglia al predicato e al soggetto nelle frasi in linguaggio naturale. Ad esempio, Get-Help significa letteralmente "Get-Help" o in un contesto PowerShell: "Show-Help". In realtà, questo è un analogo del comando man nei sistemi Unix e i manuali in PowerShell devono essere richiesti in questo modo e non chiamando i cmdlet con il tasto –help o /?.. Non dimenticare la documentazione online per PowerShell: Microsoft lo ha abbastanza dettagliato.

Oltre a Get, i cmdlet utilizzano altri verbi per denotare azioni (e non solo verbi in senso stretto). Nell'elenco seguente riportiamo alcuni esempi:

Add - aggiungere;
Clear - chiaro;
Enable - accendere;
Disable - spegnere;
New - creare;
Remove - eliminare;
Set - chiedere;
Start - correre;
Stop - fermare;
Export - esportare;
Import - importare.

Esistono cmdlet di sistema, utente e opzionali: come risultato dell'esecuzione, restituiscono tutti un oggetto o un array di oggetti. Non fanno distinzione tra maiuscole e minuscole, ad es. dal punto di vista dell'interprete dei comandi non c'è differenza tra Get-Help e get-help. Il carattere ';' viene utilizzato per la separazione, ma è obbligatorio inserirlo solo se vengono eseguiti più cmdlet sulla stessa riga. 

I cmdlet di Windows PowerShell sono raggruppati in moduli (NetTCPIP, Hyper-V e così via) ed è disponibile un cmdlet Get-Command per eseguire la ricerca per oggetto e azione. Puoi visualizzare la guida in questo modo:

Get-Help Get-Command

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali

Per impostazione predefinita, il comando visualizza una guida rapida, ma i parametri (argomenti) vengono passati ai cmdlet secondo necessità. Con il loro aiuto è possibile, ad esempio, ottenere un aiuto dettagliato (parametro -Detailed) o completo (-Full), nonché visualizzare esempi (parametro -Examples):

Get-Help Get-Command -Examples

La Guida in Windows PowerShell viene aggiornata con il cmdlet Update-Help. Se una riga di comandi risulta essere troppo lunga, gli argomenti del cmdlet possono essere trasferiti a quello successivo scrivendo il carattere di servizio ''' e premendo Invio: semplicemente finire di scrivere un comando su una riga e continuare su un'altra non funzionerà.

Ecco 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 — visualizza il contenuto del file.

Per i cmdlet e le utilità esterne utilizzati di frequente, Windows PowerShell dispone di sinonimi brevi: alias (dall'inglese Alias). Ad esempio, dir è un alias per Get-ChildItem. L'elenco dei sinonimi include anche analoghi di comandi dei sistemi Unix (ls, ps, ecc.) E il cmdlet Get-Help viene chiamato dal comando help. L'elenco completo dei sinonimi può essere visualizzato utilizzando il cmdlet Get-Alias:

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali

Script, funzioni, moduli e linguaggio PowerShell

Gli script di Windows PowerShell vengono archiviati come file di testo normale con estensione .ps1. Non è possibile eseguirli facendo doppio clic: è necessario fare clic con il tasto destro per aprire il menu contestuale e selezionare "Esegui in PowerShell". Dalla console dovrai specificare il percorso completo dello script oppure andare nella directory appropriata e scrivere il nome del file. Anche l'esecuzione degli script è limitata dai criteri di sistema e per verificare le impostazioni correnti è possibile utilizzare il cmdlet Get-ExecutionPolicy, che restituirà uno dei seguenti valori:

Restricted — l'avvio degli script è disabilitato (per impostazione predefinita);
AllSigned - è consentito solo il lancio di script firmati da uno sviluppatore fidato;
RemoteSigned - Autorizzato a eseguire script firmati e propri;
Unrestricted - Autorizzato a eseguire qualsiasi script.

L'amministratore ha due opzioni. Il più sicuro prevede la firma degli script, ma questa è una stregoneria piuttosto seria: ne parleremo nei seguenti articoli. Ora prendiamo la strada della minor resistenza e cambiamo la politica:

Set-ExecutionPolicy RemoteSigned

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali
Per eseguire questa operazione sarà necessario eseguire PowerShell come amministratore, sebbene sia possibile modificare la policy per l'utente corrente con un'impostazione speciale.

Gli script sono scritti in un linguaggio di programmazione orientato agli oggetti, i cui comandi sono denominati secondo lo stesso principio dei cmdlet precedentemente discussi: “Action-Object” (“Verb-Noun”). Il suo scopo principale è automatizzare le attività amministrative, ma è un linguaggio interpretato a tutti gli effetti che dispone di tutti i costrutti necessari: salto condizionale, cicli, variabili, array, oggetti, gestione degli errori, ecc. Qualsiasi editor di testo va bene per lo scripting, ma è preferibile eseguire Windows PowerShell ISE.

È possibile passare parametri allo script, renderli obbligatori e impostare valori predefiniti. Inoltre, Windows PowerShell consente di creare e chiamare funzioni allo stesso modo dei cmdlet, utilizzando il costrutto Function e le parentesi graffe. Uno script con funzioni è chiamato modulo e ha un'estensione .psm1. I moduli devono essere archiviati in directory definite nelle variabili di ambiente di PowerShell. Puoi visualizzarli con il seguente comando:

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

Trasportatori

Nell'ultimo esempio, abbiamo utilizzato un costrutto familiare agli utenti della shell Unix. In Windows PowerShell la barra verticale permette anche di passare l'output di un comando all'input di un altro, ma c'è una differenza significativa nell'implementazione della pipeline: non parliamo più di un insieme di caratteri o di qualche tipo di testo. I cmdlet incorporati o le funzioni definite dall'utente restituiscono oggetti o matrici di oggetti e possono anche riceverli come input. Come la Bourne Shell e i suoi numerosi successori, PowerShell semplifica le attività complesse con una pipeline.

L'esempio più semplice di pipeline è simile al seguente:

Get-Service | Sort-Object -property Status

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali
Innanzitutto viene eseguito il cmdlet Get-Service, quindi tutti i servizi ricevuti vengono passati al cmdlet Sort-Object per l'ordinamento in base alla proprietà Status. L'argomento a cui viene passato il risultato della sezione precedente della pipeline dipende dal suo tipo: in genere è InputObject. Questo problema sarà discusso più in dettaglio in un articolo dedicato al linguaggio di programmazione PowerShell. 

Se lo desideri, puoi continuare la catena e passare il risultato dell'operazione Sort-Object a un altro cmdlet (verranno eseguiti da sinistra a destra). A proposito, gli utenti Windows hanno accesso anche alla costruzione per l'impaginazione familiare a tutti gli Unixoid: 

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

Esecuzione di attività in background 

Molto spesso è necessario eseguire un determinato comando in background per non attendere il risultato della sua esecuzione nella sessione della shell. Windows PowerShell dispone di diversi cmdlet per questa situazione:

Start-Job - avviare un'attività in background;
Stop-Job — interrompere l'attività in background;
Get-Job — visualizzare l'elenco delle attività in background;
Receive-Job — visualizzare il risultato dell'esecuzione dell'attività in background;
Remove-Job — eliminare un'attività in background;
Wait-Job - trasferendo nuovamente l'attività in background alla console.

Per avviare un'attività in background, utilizziamo il cmdlet Start-Job e specifichiamo un comando o una serie di comandi tra parentesi graffe:

Start-Job {Get-Service}

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali
Le attività in background in Windows PowerShell possono essere manipolate conoscendone i nomi. Innanzitutto, impariamo come visualizzarli:

Get-Job

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali
Ora mostriamo il risultato del lavoro Job1:

Receive-Job Job1 | more

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali
Tutto è piuttosto semplice.

Esecuzione di comandi da remoto

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

  • Molti cmdlet hanno un parametro -ComputerName, ma in questo modo non funzionerà, ad esempio, creare un trasportatore;
  • Cmdlet Enter-PSSession ti permette di creare una sessione interattiva su una macchina remota; 
  • Utilizzando un cmdlet Invoke-Command puoi eseguire comandi o script su uno o più computer remoti.

Versioni di PowerShell

Dalla sua prima versione nel 2006, PowerShell è cambiata molto. Lo strumento è disponibile per molti sistemi in esecuzione 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. Ultima versione 6.2 rilasciata il 10 gennaio 2018. È probabile che gli script scritti per le versioni precedenti funzionino nelle versioni successive, ma il backport può essere problematico perché PowerShell ha introdotto un gran numero di nuovi cmdlet nel corso degli anni di sviluppo. Puoi scoprire la versione della shell dei comandi installata sul computer utilizzando la proprietà PSVersion della variabile incorporata $PSVersionTable:

$PSVersionTable.PSVersion

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali
Puoi anche utilizzare il cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali
Lo stesso viene fatto con il cmdlet Get-Host. In realtà le opzioni sono molte, ma per utilizzarle è necessario imparare il linguaggio di programmazione PowerShell, cosa che faremo in prossimo articolo

Risultati di 

Microsoft è riuscita a creare una shell di comandi davvero potente con un comodo ambiente integrato per lo sviluppo di script. Ciò che lo distingue dagli strumenti che conosciamo nel mondo Unix è la sua profonda integrazione con i sistemi operativi della famiglia Windows, nonché con i relativi software e la piattaforma .NET Core. PowerShell può essere definita una shell orientata agli oggetti perché i cmdlet e le funzioni definite dall'utente restituiscono oggetti o matrici di oggetti e possono riceverli come input. Pensiamo che tutti gli amministratori di server Windows dovrebbero possedere questo strumento: è passato il tempo in cui potevano fare a meno della riga di comando. È particolarmente necessaria una shell della console avanzata il nostro VPS a basso costo con Windows Server Core, ma questa è una storia completamente diversa.

Che cos'è Windows PowerShell e con cosa viene mangiato? Parte 1: Caratteristiche principali

Solo gli utenti registrati possono partecipare al sondaggio. AccediPer favore.

Quali argomenti dovrebbero essere affrontati per primi nei prossimi articoli della serie?

  • 53,2%Programmazione in PowerShell123

  • 42,4%Funzioni e moduli di PowerShell98

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

  • 12,1%Lavorare con i repository tramite fornitori (provider)28

  • 57,6%Automatizza l'amministrazione del computer utilizzando PowerShell133

  • 30,7%Gestione di software e incorporamento di eseguibili PowerShell in prodotti di terze parti71

231 utenti hanno votato. 37 utenti si sono astenuti.

Fonte: habr.com

Aggiungi un commento