Uso della Powershell

Navigation:  Catalog & System Administration > L'Automation Console >

Uso della Powershell

Previous pageReturn to chapter overviewNext page

Windows PowerShell è la parte del sistema operativo Microsoft Windows che permette agli utenti di interagire con il sistema. Sostituisce la shell MS-DOS di Windows estendendone il comportamento ed ampliandone le funzionalità. È composto da un’interfaccia a riga di comando (CLI) e da un linguaggio di scripting. Si basa sul paradigma di programmazione ad oggetti (OOP) e su Microsoft .NET.

I comandi basilari PowerShell si chiamano commandlet (cmdlet), speciali classi .NET che svolgono run-time specifiche operazioni. Ogni cmdlet è richiamabile scrivendone il nome e gli eventuali parametri di input disponibili. Tutti i cmdlet sono denominati secondo un pattern «verbo-nome», descrivente la funzionalità che il comando implementa. L’output di un cmdlet è un oggetto .NET.

Accedendo all’output di un cmdlet tramite riga di comando, esso è convertito automaticamente in testo. È comunque possibile utilizzare tale output come input di un altro cmdlet, definendo una sequenza di azioni. Il sistema si preoccuperà di convertire l’output nell’oggetto più appropriato, in modo che sia interpretabile dal comando destinato a processarlo. Il meccanismo appena descritto è implementato attraverso il pipeline dei cmdlet: utilizzando il carattere “|” (pipe) tra due cmdlet, l’output del primo comando diventerà input del secondo.

 

ex

ESEMPIO DI CALCOLO DELLE DIMENSIONI DI UNA DIRECTORY (PIPELINE)

Al fine di ottenere le statistiche relative alle dimensioni di una directory è possibile utilizzare cmdlet in pipeline:

  Get-ChildItem | Measure-Object –Property Length –Sum - Average

Il cmdlet Get-ChildItem restituisce l’elenco dei file all’interno del folder corrente. L’output del comando viene passato in ingresso al cmdlet Measure-Object che ne calcola le statistiche (sum e average a partire dalla length dei file).

  Count    : 188

  Average  : 916557,64893617

  Sum      : 172312838

  Maximum  :

  Minimum  :

  Property : Length

 

Il linguaggio di scripting fornito da PowerShell è un linguaggio dinamicamente tipizzato (i.e. il controllo del tipo delle variabili è effettuato run-time piuttosto che in fase di compilazione), attraverso cui è possibile implementare sequenze di operazioni complesse, tipiche della programmazione procedurale. Esso include gli elementi e i costrutti tipici dei linguaggi di programmazione ad oggetti. Sono supportate, infatti, varabili, costrutti condizionali (if-then-else), cicli (while, do, for e foreach), gestione degli errori e delle eccezioni, array ed array associativi. Il linguaggio permette inoltre di definire e invocare funzioni.

 

ex

SINTASSI PER DEFINIRE ED INVOCARE FUNZIONI

La sintassi per definire una funzione è:

  function myFunction($Param1, $Param2)

  {

     istruzioni

  }

 

La funzione è invocata in due modi:

  #method 1

  myFunction value1 value2

  #method 2

  myFunction –Param1 value1 –Param2 value2

 

Tutte le variabili iniziano con il carattere “$”. Ad una variabile può essere associato qualsiasi tipo di valore, incluso l’output di un cmdlet. E’ possibile quindi utilizzare le variabili come input di altri comandi per eseguire l’operazione desiderata.

Attraverso la creazione di uno script è immediato automatizzare interi processi utilizzando una catena di cmdlet. Ogni script è un file di testo con estensione .ps1 e viene richiamato all’interno della Poweshell con la sintassi .\<path_del_file>\nome_file.ps1.

 

ex

ESEMPIO DI CALCOLO DELLE DIMENSIONI DI UNA DIRECTORY (SCRIPT)

Al fine di ottenere le statistiche relative alle dimensioni di una directory è possibile creare un script di cmdlet:

   $item = Get-ChildItem

   $stats = $item | Measure-Object –Property Length –Sum - Average

   $stats

La variabile $item viene valorizzata con l’oggetto restituito dal cmdlet Get-ChildItem sulla directory corrente; la variabile $stats memorizza le statistiche desiderate ottenute mettendo in pipe la variabile $items e il cmdlet Measure-Object (con i relativi parametri); infine il contenuto di $stats viene stampato a video.

  Count    : 188

  Average  : 916557,64893617

  Sum      : 172312838

  Maximum  :

  Minimum  :

  Property : Length

 

Windows PowerShell Integrated Script Enviroment (PowerShell ISE) è un ambiente di programmazione in cui è possibile eseguire comandi, scrivere script PowerShell, testarli e sottoporli a debug. L’interfaccia grafica supporta funzionalità di modifica su più righe, completamento tramite TAB, colorazione della sintassi, esecuzione selettiva di parti di codice.

Windows PowerShell ISE si compone di :

una toolbar che consente di effettuare operazioni tipiche di un editor testuale (i.e. apertura/salvataggio, taglia/copia/incolla, ecc) e di un editor di programmazione (i.e run/debug di codice, ecc);

uno shell panel per la definizione di codice e l’esecuzione di script PowerShell;

un pannello di scripting per la definizione degli script;

un pannello di cmdlet per visualizzare l’elenco dei cmdlet disponibili a seconda del modulo selezionato.