Creare e salvare script in Azure PowerShell

Completato

Le attività complesse o ripetitive spesso comportano un notevole carico amministrativo. Le organizzazioni preferiscono automatizzare queste attività per ridurre i costi ed evitare gli errori.

L’automazione è importante nell'esempio relativo all'azienda CRM (Customer Relationship Management). In questo caso, il software viene testato su più macchine virtuali Linux, che è necessario eliminare e ricreare continuamente. Si vuole usare uno script di PowerShell per automatizzare la creazione delle macchine virtuali, invece di crearle manualmente ogni volta.

Oltre all'operazione di base per la creazione di una macchina virtuale, sono previsti alcuni altri requisiti per lo script:

  • Poiché vengono create più macchine virtuali, si vuole inserire la creazione all'interno di un ciclo.
  • È necessario creare le macchine virtuali in tre diversi gruppi di risorse, pertanto il nome del gruppo di risorse deve essere passato allo script come parametro.

In questa sezione viene descritto come scrivere ed eseguire uno script di Azure PowerShell che soddisfi questi requisiti.

Che cos'è uno script di PowerShell?

Uno script di PowerShell è un file di testo contenente comandi e costrutti di controllo. I comandi sono chiamate di cmdlet. I costrutti di controllo sono funzionalità di programmazione fornite da PowerShell, come cicli, variabili, parametri, commenti e così via.

I file di script di PowerShell hanno un'estensione di .ps1 file. È possibile creare e salvare questi file con qualsiasi editor di testo.

Suggerimento

Se si scrivono script di PowerShell in Windows, è possibile usare Windows PowerShell ISE. Questo editor offre funzionalità come la colorazione della sintassi e un elenco dei cmdlet disponibili.

Lo screenshot seguente mostra il Windows PowerShell Integrated Scripting Environment (ISE) con uno script di esempio per connettersi ad Azure e creare una macchina virtuale in Azure.

Screenshot of the Windows PowerShell Integrated Scripting Environment with a script to create a virtual machine open in the editing window.

Dopo avere scritto lo script, eseguirlo dalla riga di comando di PowerShell passando il nome del file preceduto da un punto e una barra rovesciata:

.\myScript.ps1

Tecniche di PowerShell

PowerShell offre numerose funzionalità disponibili nei tipici linguaggi di programmazione. È possibile definire variabili, usare rami e cicli, acquisire parametri della riga di comando, scrivere funzioni, aggiungere commenti e così via. Per lo script sono necessarie tre funzionalità: variabili, cicli e parametri.

Variabili

Nell'unità precedente si è visto che PowerShell supporta le variabili. Usare $ per dichiarare una variabile e = per assegnare un valore. Ad esempio:

$loc = "East US"
$iterations = 3

Le variabili possono contenere oggetti. Ad esempio, la definizione seguente imposta la variabile adminCredential sull'oggetto restituito dal cmdlet Get-Credential.

$adminCredential = Get-Credential

Per ottenere il valore archiviato in una variabile, usare il prefisso $ e il relativo nome, come indicato di seguito:

$loc = "East US"
New-AzResourceGroup -Name "MyResourceGroup" -Location $loc

Cicli

PowerShell include diverse strutture del ciclo, tra cui For, Do...Whilee For...Each. Il ciclo For è quello più adatto alle esigenze attuali, perché consente di eseguire un cmdlet per un numero fisso di volte.

La sintassi di base è illustrata nell'esempio seguente. L'esempio viene eseguito per due iterazioni e ogni volta visualizza il valore di i. Gli operatori di confronto sono -lt per "minore di", -le per "minore o uguale a", -eq per "uguale a", -ne per "diverso da" e così via.

For ($i = 1; $i -lt 3; $i++)
{
    $i
}

Parametri

Quando si esegue uno script, è possibile passare argomenti dalla riga di comando. È possibile specificare nomi per ogni parametro in modo da consentire allo script di estrarre i valori. Ad esempio:

.\setupEnvironment.ps1 -size 5 -location "East US"

Nello script, i valori verranno acquisiti nelle variabili. In questo esempio, viene stabilita la corrispondenza dei parametri in base al nome:

param([string]$location, [int]$size)

È possibile omettere i nomi dalla riga di comando. Ad esempio:

.\setupEnvironment.ps1 5 "East US"

Nello script ci si baserà sulla posizione per i casi in cui i parametri sono senza nome:

param([int]$size, [string]$location)

Si possono accettare questi parametri come input e usare un ciclo per creare un set di macchine virtuali dai parametri specificati. Si proverà a eseguire queste operazioni nella prossima unità.

La combinazione di PowerShell e Azure PowerShell offre tutti gli strumenti necessari per l'automazione di Azure. Nell'esempio relativo al sistema CRM, sarà possibile creare più macchine virtuali Linux usando un parametro per mantenere lo script generico e un ciclo per evitare la ripetizione del codice. Questo script consente di eseguire un'operazione precedentemente complessa in un singolo passaggio.