Variabelen beheren in Azure Automation

Variabele assets zijn waarden die beschikbaar zijn voor alle runbooks en DSC-configuraties in uw Automation-account. U kunt ze beheren vanuit Azure Portal, vanuit PowerShell, binnen een runbook of in een DSC-configuratie.

Automatiseringsvariabelen zijn handig voor de volgende scenario's:

  • Een waarde delen tussen meerdere runbooks of DSC-configuraties.

  • Een waarde delen tussen meerdere taken vanuit hetzelfde runbook of DSC-configuratie.

  • Een waarde beheren die wordt gebruikt door runbooks of DSC-configuraties vanuit de portal of vanaf de PowerShell-opdrachtregel. Een voorbeeld is een set algemene configuratie-items, zoals een specifieke lijst met VM-namen, een specifieke resourcegroep, een AD-domeinnaam en meer.

Azure Automation behoudt variabelen en maakt deze beschikbaar, zelfs als een runbook- of DSC-configuratie mislukt. Met dit gedrag kan een runbook- of DSC-configuratie een waarde instellen die vervolgens wordt gebruikt door een ander runbook of door hetzelfde runbook of DSC-configuratie wanneer deze de volgende keer wordt uitgevoerd.

Azure Automation slaat elke versleutelde variabele veilig op. Wanneer u een variabele maakt, kunt u de versleuteling en opslag van Azure Automation opgeven als een beveiligde asset. Nadat u de variabele hebt gemaakt, kunt u de versleutelingsstatus ervan niet meer wijzigen zonder de variabele opnieuw te maken. Als u met Automation-accountvariabelen gevoelige gegevens opslaat die nog niet zijn versleuteld, moet u deze verwijderen en opnieuw maken als versleutelde variabelen. Een Microsoft Defender voor Cloud aanbeveling is om alle Azure Automation-variabelen te versleutelen, zoals beschreven in Automation-accountvariabelen moeten worden versleuteld. Als u niet-versleutelde variabelen hebt die u wilt uitsluiten van deze beveiligingsaanbeveling, raadpleegt u Een resource uitsluiten van aanbevelingen en de beveiligingsscore om een uitzonderingsregel te maken.

Notitie

Beveilig assets in Azure Automation zoals referenties, certificaten, verbindingen en versleutelde variabelen. Deze assets worden versleuteld en opgeslagen in Azure Automation met behulp van een unieke sleutel die wordt gegenereerd voor elk Automation-account. Azure Automation slaat de sleutel op in de door het systeem beheerde Sleutelkluis. Voordat u een beveiligde asset opslaat, laadt Automation de sleutel uit Key Vault en gebruikt deze vervolgens om de asset te versleutelen.

Typen variabele

Wanneer u een variabele maakt met Azure Portal, moet u een gegevenstype opgeven in de vervolgkeuzelijst, zodat in de portal het juiste besturingselement voor het invoeren van de variabelewaarde kan worden weergegeven. Hieronder vindt u variabele typen die beschikbaar zijn in Azure Automation:

  • String
  • Geheel getal
  • Datum/tijd
  • Booleaanse waarde
  • Nul

De variabele is niet beperkt tot het opgegeven gegevenstype. U moet de variabele instellen met Windows PowerShell als u een waarde van een ander type wilt opgeven. Als u aangeeft Not defined, wordt de waarde van de variabele ingesteld op Null. U moet de waarde instellen met de cmdlet Set-AzAutomationVariable of de interne Set-AutomationVariable cmdlet. U gebruikt de Set-AutomationVariable in uw runbooks die zijn bedoeld om te worden uitgevoerd in de Azure-sandboxomgeving of op een Windows Hybrid Runbook Worker.

U kunt Azure Portal niet gebruiken om de waarde voor een complex variabeletype te maken of te wijzigen. U kunt echter een waarde van elk type opgeven met Windows PowerShell. Complexe typen worden opgehaald als een Newtonsoft.Json.Linq.JProperty voor een complex objecttype in plaats van een PSObject-type PSCustomObject.

U kunt meerdere waarden opslaan in één variabele door een matrix of hashtabel te maken en op te slaan in de variabele.

Notitie

VM-naamvariabelen mogen maximaal 80 tekens bevatten. Resourcegroepvariabelen mogen maximaal 90 tekens bevatten. Zie Naamgevingsregels en -beperkingen voor Azure-resources.

PowerShell-cmdlets voor toegang tot variabelen

De cmdlets in de volgende tabel maken en beheren Automation-variabelen met PowerShell. Ze worden verzonden als onderdeel van de Az-modules.

Cmdlet Omschrijving
Get-AzAutomationVariable Haalt de waarde van een bestaande variabele op. Als de waarde een eenvoudig type is, wordt hetzelfde type opgehaald. Als het een complex type is, wordt een PSCustomObject type opgehaald. 1
New-AzAutomationVariable Hiermee maakt u een nieuwe variabele en stelt u de bijbehorende waarde in.
Remove-AzAutomationVariable Hiermee verwijdert u een bestaande variabele.
Set-AzAutomationVariable Hiermee stelt u de waarde voor een bestaande variabele in.

1 U kunt deze cmdlet niet gebruiken om de waarde van een versleutelde variabele op te halen. De enige manier om dit te doen, is door de interne Get-AutomationVariable cmdlet in een runbook of DSC-configuratie te gebruiken. Als u bijvoorbeeld de waarde van een versleutelde variabele wilt zien, kunt u een runbook maken om de variabele op te halen en deze vervolgens naar de uitvoerstroom te schrijven:

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

Interne cmdlets voor toegang tot variabelen

De interne cmdlets in de volgende tabel worden gebruikt voor toegang tot variabelen in uw runbooks en DSC-configuraties. Deze cmdlets worden geleverd met de globale module Orchestrator.AssetManagement.Cmdlets. Zie Interne cmdlets voor meer informatie.

Interne cmdlet Omschrijving
Get-AutomationVariable Haalt de waarde van een bestaande variabele op.
Set-AutomationVariable Hiermee stelt u de waarde voor een bestaande variabele in.

Notitie

Vermijd het gebruik van variabelen in de Name parameter van Get-AutomationVariable de cmdlet in een runbook- of DSC-configuratie. Het gebruik van een variabele kan de detectie van afhankelijkheden tussen runbooks en Automation-variabelen tijdens het ontwerp bemoeilijken.

Python-functies voor toegang tot variabelen

De functies in de volgende tabel worden gebruikt voor toegang tot variabelen in een Python 2- en 3-runbook. Python 3-runbooks zijn momenteel in preview.

Python Functions Omschrijving
automationassets.get_automation_variable Haalt de waarde van een bestaande variabele op.
automationassets.set_automation_variable Hiermee stelt u de waarde voor een bestaande variabele in.

Notitie

U moet de automationassets module boven aan uw Python-runbook importeren om toegang te krijgen tot de assetfuncties.

Een variabele maken en ophalen

Notitie

Als u de versleuteling voor een variabele wilt verwijderen, moet u de variabele verwijderen en opnieuw maken als niet-versleuteld.

Een variabele maken en ophalen met behulp van Azure Portal

  1. Selecteer variabelen onder Gedeelde resources in het linkerdeelvenster van uw Automation-account.
  2. Selecteer Een variabele toevoegen op de pagina Variabelen.
  3. Voltooi de opties op de pagina Nieuwe variabele en selecteer Vervolgens Maken om de nieuwe variabele op te slaan.

Notitie

Zodra u een versleutelde variabele hebt opgeslagen, kan deze niet worden weergegeven in de portal. Deze kan alleen worden bijgewerkt.

Een variabele maken en ophalen in Windows PowerShell

Uw runbook- of DSC-configuratie maakt gebruik van de New-AzAutomationVariable cmdlet om een nieuwe variabele te maken en de oorspronkelijke waarde in te stellen. Als de variabele is versleuteld, moet de aanroep de Encrypted parameter gebruiken. Uw script kan de waarde van de variabele ophalen met behulp van Get-AzAutomationVariable.

Notitie

Een PowerShell-script kan geen versleutelde waarde ophalen. De enige manier om dit te doen, is door de interne Get-AutomationVariable cmdlet te gebruiken.

In het volgende voorbeeld ziet u hoe u een tekenreeksvariabele maakt en vervolgens de bijbehorende waarde retourneert.

$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

In het volgende voorbeeld ziet u hoe u een variabele maakt met een complex type en vervolgens de eigenschappen ervan ophaalt. In dit geval wordt een virtuele-machineobject van Get-AzVM gebruikt om een subset van de eigenschappen op te geven.

$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

Voorbeelden van tekstrunbooks

In het volgende voorbeeld ziet u hoe u een variabele instelt en ophaalt in een tekstueel runbook. In dit voorbeeld wordt ervan uitgegaan dat er gehele getallen met de naam numberOfIterations en numberOfRunnings en een tekenreeksvariabele met de naam sampleMessage worden gemaakt.

$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)

Voorbeelden van grafisch runbook

In een grafisch runbook kunt u activiteiten toevoegen voor de interne cmdlets Get-AutomationVariable of Set-AutomationVariable. Klik met de rechtermuisknop op elke variabele in het deelvenster Bibliotheek van de grafische editor en selecteer de gewenste activiteit.

Add variable to canvas

In de volgende afbeelding ziet u voorbeeldactiviteiten voor het bijwerken van een variabele met een eenvoudige waarde in een grafisch runbook. In dit voorbeeld wordt met de activiteit voor Get-AzVM het ophalen van één virtuele Azure-machine de computernaam opgeslagen in een bestaande Automation-tekenreeksvariabele. Het maakt niet uit of de koppeling een pijplijn of reeks is, omdat de code slechts één object in de uitvoer verwacht.

Set simple variable

Volgende stappen