Hantera variabler i Azure Automation

Variabeltillgångar är värden som är tillgängliga för alla runbooks och DSC-konfigurationer i ditt Automation-konto. Du kan hantera dem från Azure-portalen, från PowerShell, i en runbook eller i en DSC-konfiguration.

Automation-variabler är användbara för följande scenarier:

  • Dela ett värde mellan flera runbooks eller DSC-konfigurationer.

  • Dela ett värde mellan flera jobb från samma runbook- eller DSC-konfiguration.

  • Hantera ett värde som används av runbooks eller DSC-konfigurationer från portalen eller från PowerShell-kommandoraden. Ett exempel är en uppsättning vanliga konfigurationsobjekt, till exempel en specifik lista över namn på virtuella datorer, en specifik resursgrupp, ett AD-domännamn med mera.

Azure Automation bevarar variabler och gör dem tillgängliga även om en runbook- eller DSC-konfiguration misslyckas. Med det här beteendet kan en runbook- eller DSC-konfiguration ange ett värde som sedan används av en annan runbook, eller av samma runbook- eller DSC-konfiguration nästa gång den körs.

Azure Automation lagrar varje krypterad variabel på ett säkert sätt. När du skapar en variabel kan du ange dess kryptering och lagring av Azure Automation som en säker tillgång. När du har skapat variabeln kan du inte ändra dess krypteringsstatus utan att återskapa variabeln. Om du har Automation-kontovariabler som lagrar känsliga data som inte redan är krypterade måste du ta bort dem och återskapa dem som krypterade variabler. En Microsoft Defender för molnet rekommendation är att kryptera alla Azure Automation-variabler enligt beskrivningen i Automation-kontovariabler ska krypteras. Om du har okrypterade variabler som du vill undanta från den här säkerhetsrekommendationsen kan du läsa Undanta en resurs från rekommendationer och säkerhetspoäng för att skapa en undantagsregel.

Kommentar

Säkra tillgångar i Azure Automation omfattar autentiseringsuppgifter, certifikat, anslutningar och krypterade variabler. Dessa tillgångar krypteras och lagras i Azure Automation med hjälp av en unik nyckel som genereras för varje Automation-konto. Azure Automation lagrar nyckeln i det systemhanterade Key Vault. Innan du lagrar en säker tillgång läser Automation in nyckeln från Key Vault och använder den sedan för att kryptera tillgången.

Variabeltyper

När du skapar en variabel med Azure-portalen måste du ange en datatyp från listrutan så att portalen kan visa lämplig kontroll för att ange variabelvärdet. Följande är variabeltyper som är tillgängliga i Azure Automation:

  • String
  • Integer
  • Datum/tid
  • Booleskt
  • Null

Variabeln är inte begränsad till den angivna datatypen. Du måste ange variabeln med Windows PowerShell om du vill ange ett värde av en annan typ. Om du anger Not definedanges värdet för variabeln till Null. Du måste ange värdet med cmdleten Set-AzAutomationVariable eller den interna Set-AutomationVariable cmdleten. Du använder Set-AutomationVariable i dina runbooks som är avsedda att köras i Azure-sandbox-miljön eller på en Windows Hybrid Runbook Worker.

Du kan inte använda Azure-portalen för att skapa eller ändra värdet för en komplex variabeltyp. Du kan dock ange ett värde av vilken typ som helst med hjälp av Windows PowerShell. Komplexa typer hämtas som newtonsoft.Json.Linq.JProperty för en komplex objekttyp i stället för psobject-typen PSCustomObject.

Du kan lagra flera värden i en enskild variabel genom att skapa en matris eller hashtable och spara den i variabeln.

Kommentar

Vm-namnvariabler kan vara högst 80 tecken. Resursgruppvariabler kan vara högst 90 tecken. Se Namngivningsregler och begränsningar för Azure-resurser.

PowerShell-cmdletar för åtkomst till variabler

Cmdletarna i följande tabell skapar och hanterar Automation-variabler med PowerShell. De levereras som en del av Az-modulerna.

Cmdlet Description
Get-AzAutomationVariable Hämtar värdet för en befintlig variabel. Om värdet är en enkel typ hämtas samma typ. Om det är en komplex typ hämtas en PSCustomObject typ. 1
New-AzAutomationVariable Skapar en ny variabel och anger dess värde.
Remove-AzAutomationVariable Tar bort en befintlig variabel.
Set-AzAutomationVariable Anger värdet för en befintlig variabel.

1 Du kan inte använda den här cmdleten för att hämta värdet för en krypterad variabel. Det enda sättet att göra detta är att använda den interna Get-AutomationVariable cmdleten i en runbook- eller DSC-konfiguration. Om du till exempel vill se värdet för en krypterad variabel kan du skapa en runbook för att hämta variabeln och sedan skriva den till utdataströmmen:

$encryptvar = Get-AutomationVariable -Name TestVariable
Write-output "The encrypted value of the variable is: $encryptvar"

Interna cmdletar för åtkomst till variabler

De interna cmdletarna i följande tabell används för att komma åt variabler i dina runbooks och DSC-konfigurationer. Dessa cmdletar levereras med den globala modulen Orchestrator.AssetManagement.Cmdlets. Mer information finns i Interna cmdletar.

Intern cmdlet Description
Get-AutomationVariable Hämtar värdet för en befintlig variabel.
Set-AutomationVariable Anger värdet för en befintlig variabel.

Kommentar

Undvik att använda variabler i parametern NameGet-AutomationVariable för cmdlet i en runbook- eller DSC-konfiguration. Användning av en variabel kan komplicera identifieringen av beroenden mellan runbooks och Automation-variabler vid designtillfället.

Python-funktioner för åtkomst till variabler

Funktionerna i följande tabell används för att komma åt variabler i en Python 2- och 3-runbook. Python 3-runbooks är för närvarande i förhandsversion.

Python Functions Description
automationassets.get_automation_variable Hämtar värdet för en befintlig variabel.
automationassets.set_automation_variable Anger värdet för en befintlig variabel.

Kommentar

Du måste importera modulen automationassets överst i Python-runbooken för att få åtkomst till tillgångsfunktionerna.

Skapa och hämta en variabel

Kommentar

Om du vill ta bort krypteringen för en variabel måste du ta bort variabeln och återskapa den som okrypterad.

Skapa och hämta en variabel med hjälp av Azure-portalen

  1. Välj Variabler under Delade resurser i det vänstra fönstret i automationskontot.
  2. På sidan Variabler väljer du Lägg till en variabel.
  3. Slutför alternativen på sidan Ny variabel och välj sedan Skapa för att spara den nya variabeln.

Kommentar

När du har sparat en krypterad variabel kan den inte visas i portalen. Det kan bara uppdateras.

Skapa och hämta en variabel i Windows PowerShell

Din runbook- eller DSC-konfiguration använder cmdleten New-AzAutomationVariable för att skapa en ny variabel och ange dess ursprungliga värde. Om variabeln är krypterad ska anropet använda parametern Encrypted . Skriptet kan hämta värdet för variabeln med hjälp av Get-AzAutomationVariable.

Kommentar

Ett PowerShell-skript kan inte hämta ett krypterat värde. Det enda sättet att göra detta är att använda den interna Get-AutomationVariable cmdleten.

I följande exempel visas hur du skapar en strängvariabel och sedan returnerar dess värde.

$rgName = "ResourceGroup01"
$accountName = "MyAutomationAccount"
$variableValue = "My String"

New-AzAutomationVariable -ResourceGroupName "ResourceGroup01" 
-AutomationAccountName "MyAutomationAccount" -Name 'MyStringVariable' `
-Encrypted $false -Value 'My String'
$string = (Get-AzAutomationVariable -ResourceGroupName "ResourceGroup01" `
-AutomationAccountName "MyAutomationAccount" -Name 'MyStringVariable').Value

I följande exempel visas hur du skapar en variabel med en komplex typ och sedan hämtar dess egenskaper. I det här fallet används ett virtuellt datorobjekt från Get-AzVM för att ange en delmängd av dess egenskaper.

$rgName = "ResourceGroup01"
$accountName = "MyAutomationAccount"

$vm = Get-AzVM -ResourceGroupName "ResourceGroup01" -Name "VM01" | Select Name, Location, Extensions
New-AzAutomationVariable -ResourceGroupName "ResourceGroup01" -AutomationAccountName "MyAutomationAccount" -Name "MyComplexVariable" -Encrypted $false -Value $vm

$vmValue = Get-AzAutomationVariable -ResourceGroupName "ResourceGroup01" `
-AutomationAccountName "MyAutomationAccount" -Name "MyComplexVariable"

$vmName = $vmValue.Value.Name
$vmTags = $vmValue.Value.Tags

Exempel på text runbook

I följande exempel visas hur du anger och hämtar en variabel i en text runbook. Det här exemplet förutsätter att heltalsvariabler med namnet numberOfIterations och numberOfRunnings skapas och en strängvariabel med namnet sampleMessage.

$rgName = "ResourceGroup01"
$accountName = "MyAutomationAccount"

$numberOfIterations = Get-AutomationVariable -Name "numberOfIterations"
$numberOfRunnings = Get-AutomationVariable -Name "numberOfRunnings"
$sampleMessage = Get-AutomationVariable -Name "sampleMessage"

Write-Output "Runbook has been run $numberOfRunnings times."

for ($i = 1; $i -le $numberOfIterations; $i++) {
    Write-Output "$i`: $sampleMessage"
}
Set-AutomationVariable -Name numberOfRunnings -Value ($numberOfRunnings += 1)

Grafiska runbook-exempel

I en grafisk runbook kan du lägga till aktiviteter för de interna cmdletarna Get-AutomationVariable eller Set-AutomationVariable. Högerklicka bara på varje variabel i fönstret Bibliotek i den grafiska redigeraren och välj den aktivitet som du vill använda.

Add variable to canvas

Följande bild visar exempelaktiviteter för att uppdatera en variabel med ett enkelt värde i en grafisk runbook. I det här exemplet hämtar aktiviteten för Get-AzVM en enskild virtuell Azure-dator och sparar datornamnet i en befintlig Automation-strängvariabel. Det spelar ingen roll om länken är en pipeline eller sekvens eftersom koden bara förväntar sig ett enda objekt i utdata.

Set simple variable

Nästa steg