Skapa och spara skript i Azure PowerShell

Slutförd

Komplexa och repetitiva uppgifter kan ofta kräva mycket administration. Organisationer vill gärna automatisera sådana uppgifter för att minska kostnaderna och undvika fel.

Automatisering är viktigt i crm-företagsexemplet (Customer Relationship Management). Där testar du din programvara på flera virtuella Linux-datorer (VM) som du kontinuerligt behöver ta bort och återskapa. Du vill använda ett PowerShell-skript för att automatisera skapandet av virtuella datorer jämfört med att skapa dem manuellt varje gång.

Utöver kärnåtgärden för att skapa en virtuell dator har du några fler krav för skriptet:

  • Du skapar flera virtuella datorer, så du vill placera skapandet i en loop.
  • Du måste skapa virtuella datorer i tre olika resursgrupper, så namnet på resursgruppen ska skickas till skriptet som en parameter.

I det här avsnittet får du se hur du skriver och kör ett Azure PowerShell-skript som uppfyller dessa krav.

Vad är ett PowerShell-skript?

Ett PowerShell-skript är en textfil som innehåller kommandon och styrelement. Kommandona anropar cmdletar. Kontrollkonstruktionerna är programmeringsfunktioner som loopar, variabler, parametrar, kommentarer och så vidare som tillhandahålls av PowerShell.

PowerShell-skriptfiler har ett .ps1 filnamnstillägg. Du kan skapa och spara de här filerna i valfri textredigerare.

Dricks

Om du skriver PowerShell-skript i Windows kan du använda Windows PowerShell Integrated Scripting Environment (ISE). Den här redigeraren har funktioner som syntaxfärgning och en lista med tillgängliga cmdletar.

I följande bild visas Windows PowerShell Integrated Scripting Environment (ISE) med ett exempelskript som ansluter till Azure och skapar en virtuell dator.

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

När du har skrivit skriptet kör du det från PowerShell-kommandoraden genom att skicka namnet på filen som föregås av en punkt och ett omvänt snedstreck:

.\myScript.ps1

PowerShell-tekniker

PowerShell har många funktioner som finns i vanliga programmeringsspråk. Du kan definiera variabler, använda grenar och loopar, inhämta kommandoradsparametrar, skriva funktioner, lägga till kommentarer och så vidare. Vi behöver tre funktioner för vårt skript: variabler, loopar och parametrar.

Variabler

I föregående lektion såg du att PowerShell stöder variabler. Använd $ för att deklarera en variabel och = för att tilldela ett värde. Till exempel:

$loc = "East US"
$iterations = 3

Variabler kan innehålla objekt. Följande definition anger exempelvis variabeln adminCredential till objektet som returneras av cmdleten Get-Credential.

$adminCredential = Get-Credential

Om du vill hämta värdet som lagras i en variabel använder du prefixet $ och dess namn, som i följande:

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

Loopar

PowerShell har flera loopstrukturer, inklusive For, Do...Whileoch For...Each. Loopen For är den bästa matchningen för våra behov, eftersom vi kör en cmdlet ett fast antal gånger.

I följande exempel visas kärnsyntaxen. Exemplet körs för två iterationer och skriver ut värdet för i varje gång. Jämförelseoperatorerna skrivs -lt för "mindre än", -le för "mindre än eller lika", -eq för "lika", -ne för "inte lika" osv.

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

Parametrar

När du kör ett skript kan du skicka argument på kommandoraden. Du kan ange namn för varje parameter så att deras värden kan användas i skriptet. Till exempel:

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

I skriptet samlar du in värdena i variabler. I det här exemplet matchas parametrarna med hjälp av namnen:

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

Du kan utelämna namnen på kommandoraden. Till exempel:

.\setupEnvironment.ps1 5 "East US"

I skriptet förlitar du dig på position för matchning när parametrarna inte är namngivna:

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

Vi kan ta dessa parametrar som indata och använda en loop för att skapa en uppsättning virtuella datorer från de angivna parametrarna. Vi ska testa detta härnäst.

I PowerShell och Azure PowerShell har du alla verktyg du behöver för att automatisera Azure. I vårt CRM-exempel kan vi skapa flera virtuella Linux-datorer med hjälp av en parameter för att hålla skriptet generiskt och en loop för att undvika upprepad kod. Med det här skriptet kan vi köra en tidigare komplex åtgärd i ett enda steg.