Passare un oggetto JSON a un runbook di Automazione di Azure

Può essere utile archiviare i dati che si desidera passare a un runbook in un file JSON. Ad esempio, è possibile creare un file JSON che contiene tutti i parametri da passare a un runbook. A tale scopo, è necessario convertire il JSON in una stringa e quindi convertire la stringa in un oggetto PowerShell prima di passare il relativo contenuto al runbook.

In questo esempio si creerà uno script di PowerShell che chiama Start-AzureRmAutomationRunbook per avviare un runbook PowerShell, passando il contenuto di JSON al runbook. Il runbook PowerShell avvia una VM di Azure, ottenendo i parametri per la VM dal file JSON che è stato passato.

Prerequisiti

Per completare l'esercitazione, sono necessari gli elementi seguenti:

Creare il file JSON

Digitare il seguente test in un file di testo e salvarlo come test.json in un punto qualsiasi nel computer locale.

{
   "VmName" : "TestVM",
   "ResourceGroup" : "AzureAutomationTest"
}

Creare il runbook

Creare un nuovo runbook di PowerShell denominato "Test-Json" in Automazione di Azure. Per informazioni su come creare un nuovo runbook di PowerShell, vedere Il primo runbook PowerShell.

Per accettare i dati JSON, il runbook deve accettare un oggetto come parametro di input.

Il runbook può quindi usare le proprietà definite nel file JSON.

Param(
     [parameter(Mandatory=$true)]
     [object]$json
)

# Connect to Azure account   
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID `
    -ApplicationID $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

# Convert object to actual JSON
$json = $json | ConvertFrom-Json

# Use the values from the JSON object as the parameters for your command
Start-AzureRmVM -Name $json.VMName -ResourceGroupName $json.ResourceGroup

Salvare e pubblicare il runbook nell'account di automazione.

Chiamare il runbook da PowerShell

Ora è possibile chiamare il runbook dal computer locale tramite Azure PowerShell. Eseguire i comandi di PowerShell seguenti:

  1. Accedere ad Azure: powershell Login-AzureRmAccount Viene richiesto di immettere le credenziali di Azure.
  2. Ottenere il contenuto del file JSON e convertirlo in una stringa: powershell $json = (Get-content -path 'JsonPath\test.json' -Raw) | Out-string JsonPath è il percorso in cui è stato salvato il file JSON.
  3. Convertire i contenuti stringa di $json in un oggetto di PowerShell: powershell $JsonParams = @{"json"=$json}
  4. Creare una tabella hash per i parametri per Start-AzureRmAutomstionRunbook: powershell $RBParams = @{ AutomationAccountName = 'AATest' ResourceGroupName = 'RGTest' Name = 'Test-Json' Parameters = $JsonParams } Si noti che si imposta il valore di Parameters sull'oggetto PowerShell che contiene i valori dal file JSON.
  5. Avviare il runbook powershell $job = Start-AzureRmAutomationRunbook @RBParams

Il runbook usa i valori del file JSON per avviare una VM.

Passaggi successivi