Passare un oggetto JSON a un runbook di Automazione di AzurePass a JSON object to an Azure Automation runbook

Può essere utile archiviare i dati che si desidera passare a un runbook in un file JSON.It can be useful to store data that you want to pass to a runbook in a JSON file. Ad esempio, è possibile creare un file JSON che contiene tutti i parametri da passare a un runbook.For example, you might create a JSON file that contains all of the parameters you want to pass to a 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.To do this, you have to convert the JSON to a string and then convert the string to a PowerShell object before passing its contents to the 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.In this example, we'll create a PowerShell script that calls Start-AzureRmAutomationRunbook to start a PowerShell runbook, passing the contents of the JSON to the runbook. Il runbook PowerShell avvia una VM di Azure, ottenendo i parametri per la VM dal file JSON che è stato passato.The PowerShell runbook starts an Azure VM, getting the parameters for the VM from the JSON that was passed in.

PrerequisitiPrerequisites

Per completare l'esercitazione, sono necessari gli elementi seguenti:To complete this tutorial, you need the following:

Creare il file JSONCreate the JSON file

Digitare il seguente test in un file di testo e salvarlo come test.json in un punto qualsiasi nel computer locale.Type the following test in a text file, and save it as test.json somewhere on your local computer.

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

Creare il runbookCreate the runbook

Creare un nuovo runbook di PowerShell denominato "Test-Json" in Automazione di Azure.Create a new PowerShell runbook named "Test-Json" in Azure Automation. Per informazioni su come creare un nuovo runbook di PowerShell, vedere Il primo runbook PowerShell.To learn how to create a new PowerShell runbook, see My first PowerShell runbook.

Per accettare i dati JSON, il runbook deve accettare un oggetto come parametro di input.To accept the JSON data, the runbook must take an object as an input parameter.

Il runbook può quindi usare le proprietà definite nel file JSON.The runbook can then use the properties defined in the 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.Save and publish this runbook in your Automation account.

Chiamare il runbook da PowerShellCall the runbook from PowerShell

Ora è possibile chiamare il runbook dal computer locale tramite Azure PowerShell.Now you can call the runbook from your local machine by using Azure PowerShell. Eseguire i comandi di PowerShell seguenti:Run the following PowerShell commands:

  1. Accedere ad Azure:Log in to Azure: powershell Login-AzureRmAccount Viene richiesto di immettere le credenziali di Azure.You are prompted to enter your Azure credentials.
  2. Ottenere il contenuto del file JSON e convertirlo in una stringa:Get the contents of the JSON file and convert it to a string: powershell $json = (Get-content -path 'JsonPath\test.json' -Raw) | Out-string JsonPath è il percorso in cui è stato salvato il file JSON.JsonPath is the path where you saved the JSON file.
  3. Convertire i contenuti stringa di $json in un oggetto di PowerShell:Convert the string contents of $json to a PowerShell object: powershell $JsonParams = @{"json"=$json}
  4. Creare una tabella hash per i parametri per Start-AzureRmAutomationRunbook:Create a hashtable for the parameters for Start-AzureRmAutomationRunbook: 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.Notice that you are setting the value of Parameters to the PowerShell object that contains the values from the JSON file.
  5. Avviare il runbookStart the runbook powershell $job = Start-AzureRmAutomationRunbook @RBParams

Il runbook usa i valori del file JSON per avviare una VM.The runbook uses the values from the JSON file to start a VM.

Passaggi successiviNext steps