PowerShell: una guida completa – parte 1a

Benvenuti alla parte 1 di 3 di Powershell: una guida completa. Clicca i seguenti link per consultare la parte 2 e la parte 3.

Windows PowerShell è un argomento piuttosto vasto, l’obiettivo di questa guida è fornire agli amministratori di sistema uno strumento semplice e utile per comprendere i fondamentali di PowerShell. Dimostreremo anche alcuni script e comandi che potranno essere utilizzati nelle comuni attività giornaliere. Questa guida vi consentirà di muovere i primi passi, insegnandovi le skill di base richieste per adottare PowerShell e lo scripting orientato a oggetti.

Cos’è PowerShell?

Windows PowerShell è una shell in linea di comando, un linguaggio di scripting e un framework per l’automazione di task creata da Microsoft. E’ basata sul framework .NET ed è perfetta per automare batch e task di sistema. PowerShell è disponibile per Windows e Linux ed è stata integrata nei sistemi operativi Microsoft fin da Windows Server 2003 R2. Oggi PowerShell è installata di default su tutti i sistemi Windows Server e tutte le edizioni professional dei sistemi desktop della casa. Inoltre, puoi scaricarla direttamente dal sito Microsoft se necessario.

PowerShell non è un linguaggio di programmazione compilato come C, è un linguaggio di scripting, cioè interpretato. Dispone di un set di comandi (cmdlet) che possono essere eseguiti dall’utente su un ampio range di diverse variabili. Questo è estremamente utile per interrogare ed eseguire comandi su un intero datacenter di server in un’unica soluzione. PowerShell include anche l’esecuzione in linea di comando, puoi lanciare qualsiasi comando Windows e si comporterà come il Prompt dei Comandi.

Come aggiornare o installare PowerShell?

Prima di iniziare, raccomandiamo di utilizzare la più recente versione di PowerShell (5.0 o superiore). Con ogni nuova release, Microsoft aggiunge nuove funzionalità e cmdlet: PowerShell è un linguaggio di scripting in evoluzione con nuove funzioni che vengono aggiunte per consentire una migliore integrazione.

Windows PowerShell include le applicazioni Core Shell e PowerShell ISE (Integrated scripting environment). Queste possono essere trovate dal menu Start semplicemente digitando PowerShell. Suggeriamo di lanciare sempre PowerShell come amministratore.

Se devi aggiornare la tua versione di Powershell, segui la prima parte di questo articolo (solo i punti da 1 a 10).

Puoi verificare la versione aprendo la Shell e digitando $psversiontable -cerca la proprietà PSVersion

Powershell - PSVersiontable

Le basi di PowerShell e Get-Help

Uno dei primi concetti da apprendere di PowerShell è il sistema di aiuto. PowerShell è stata progettata per essere semplice da usare ed ogni cmdlet include della documentazione di aiuto dettagliata su come utilizzarlo.

Il file di aiuto contiene la descrizione del comando, la sintassi da utilizzare e anche un esempio d’uso.

La comunità di PowerShell ha abbracciato questo approccio informativo e la grande maggioranza degli script disponibili online hanno file d’aiuto dettagliati. E’ importante abituarsi a controllare sempre il file d’aiuto, anche se non si è “bloccati”. Scoprirai molte cose nuove sui cmdlet e modalità d’uso che probabilmente ignoravi.

  • Per prima cosa dovresti aggiornare i file di help da Microsoft digitando update-help – questo comando dirà a PowerShell di scaricare da Internet tutti gli help aggiornati. Va eseguito una sola volta.
  • Ora digitate Get-Command – verrà presentata una lista di tutti i comandi disponibili. (PowerShell Tip – la grammatica dei comandi è sempre al singolare: Log non Logs; Service non Services)
  • Quasi tutti i file di aiuto includono degli esempi – Con il comando get-help get-service -examples potrai consultarli. Questo è il modo migliore per imparare ad utilizzare i primi cmdlet.

get-help get-service

  • Sopra puoi vedere il file help di get-service, con le quattro aree chiave sono state evidenziate
    • SYNOPSIS – Cosa il comando fa
    • SYNTAX – Come utilizzare il comando per farne cmdlet
    • RELATED LINKS – I comandi simili o correlati, nell’esempio, troviamo comandi con cui get-service può interagire nella pipeline.
    • REMARKS – Come ottenere maggiori informazioni sul comando.

Set-ExecutionPolicy

Le policy di esecuzione sono un elemento di sicurezza di PowerShell e determinano la possibilità dell’utente di eseguire determinati comandi e/o caricare la configurazione di file. Se configurate erroneamente, le policy ti impediranno di eseguire tutti gli script disponibili nella tua versione di PowerShell. Questo apparirà chiaramente nel momento in cui utilizzerai script scaricati dal web.

Puoi configurare le policy in diversi modi, la più comune è semplicemente consentire l’esecuzione di tutti gli script, o se preferisci, puoi semplicemente disabilitare le security policy. Il secondo sistema non è una best practice, ma è estremamente utile per fare pratica ed eseguire test di laboratorio.

  1. Per abilitare l’esecuzione di script remoti digita set-executionpolicy remotesigned
  2. Per disabilitare le policy digita Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Usate la seconda opzione con cautela e mai in un ambiente di produzione.

 

Cos’è la Pipeline?

La pipeline viene utilizzata per importare, esportare e convertire dati in un comando Windows PowerShell. Per utilizzarla a dovere, è importante pensare sempre a cosa è presente nella pipeline mentre si esegue il comando. Chi ha esperienza con Linux troverà più semplice dominare il concetto. Ogni volta che esegui un comando PowerShell, il risultato (o dato) viene passato “a valle” nella pipeline. I dati risultanti possono essere utilizzati per eseguire ulteriori comandi, a cascata.

Nota – I comandi sono separati usando il simbolo pipe “|”.

Il modo più semplice per spiegarlo è provare un semplice comando, ad esempio get-process | stop process

Il risultato del Comando A (get-process) viene passato a valle della pipeline al Comando B (stop-process) che viene a sua volta passato all’Output. Puoi quindi manipolare il Comando A per passare a valle dei risultati specifici. Puoi anche aggiungere ulteriori “passaggi”, usando le pipe, per ottenere cmdlet granulari.

I fondamentali Powershell

Windows PowerShell è una shell orientata a oggetti, ogni cmdlet è una collezioni di oggetti ed ogni oggetto ha le sue proprietà. Questo può essere dimostrato utilizzando il comando get-member. Potete inserire il comando get-member nella pipeline, come ad esempio get-service | get-member. 

Al fine di comprendere meglio, digita get-service nella shell

 

get-service

Vedrai le informazioni su ogni servizio del tuo sistema, incluso status, name ed displayname. Ma sono presenti molte altre proprietà per l’oggetto get-service che qui non stiamo visualizzando.

Ora digita get-service | get-member

Il risultato comprenderà gli oggetti applicabili al dataset Get-Service, che includono Alias, Methods e property.

 

get-process | get-member

Puoi ora utilizzare le informazioni da Get-Member per costruire i tuoi comandi.

Digita get-service | Select-object Name, startype, status

Saranno mostrate informazioni riguardo ai servizi di sistema, questa volta con Name, Starttype e Status.

Possiamo spingerci ancora oltre introducendo sorting (ordinamento), grouping (raggruppamento) e measuring (misurazione).

Digita get-service | Select-Object Name, Starttype, status | sort-object StartType

I risultati saranno ordinati per Starttype. (di default alfanumerico)

Powrshell sorting

Ora digita get-service | Select-object Name, StartType, Status | Group-Object -property Status

I servizi saranno raggruppati per Running, Stopped o se applicabile disabled. Saranno anche conteggiati e il valore viene riportato fra le parentesi {}.

get-service - group

Infine, digita Get-service | Where-object status -eq “Running” | Measure-object

Where-object | MEasure-Object

Questo comando cercherà unicamente i servizi in esecuzione (Running) e li conterà. Nel nostro esempio abbiamo 80 servizi in esecuzione.

 

In questa prima parte abbiamo mosso i primi passi nel mondo di Windows PowerShell. E’ importante ricordare i fondamentali introdotti qui. Nella seconda parte introdurremo l’importazione dei dati e l’esportazione di dati.

 

Share: Facebook Twitter Linkedin

Comments