Il primo runbook PowerShellMy first PowerShell runbook

Questa esercitazione illustra la creazione di un runbook PowerShell in Automazione di Azure.This tutorial walks you through the creation of a PowerShell runbook in Azure Automation. Si inizia con un runbook semplice che viene testato e pubblicato, quindi viene illustrato come tenere traccia dello stato del processo del runbook.You start with a simple runbook that you test and publish while you learn how to track the status of the runbook job. Si modifica quindi il runbook per gestire effettivamente le risorse di Azure, avviando in questo caso una macchina virtuale di Azure.Then you modify the runbook to actually manage Azure resources, in this case starting an Azure virtual machine. Si rende infine il runbook più affidabile aggiungendo i relativi parametri.Lastly, you make the runbook more robust by adding runbook parameters.

PrerequisitiPrerequisites

Per completare questa esercitazione è necessario soddisfare i prerequisiti seguenti:To complete this tutorial, you need the following prerequisites:

  • Sottoscrizione di Azure.Azure subscription. Se non si ha ancora una sottoscrizione, è possibile attivare i vantaggi dell'abbonamento MSDN oppure iscriversi per ottenere un account gratuito.If you don't have one yet, you can activate your MSDN subscriber benefits or sign up for a free account.
  • Account di Automazione che conterrà il runbook ed eseguirà l'autenticazione con le risorse di Azure.Automation account to hold the runbook and authenticate to Azure resources. Questo account deve avere l'autorizzazione per avviare e arrestare la macchina virtuale.This account must have permission to start and stop the virtual machine.
  • Macchina virtuale di Azure.An Azure virtual machine. La macchina virtuale viene arrestata e avviata, quindi non deve essere una macchina virtuale di produzione.You stop and start this machine so it shouldn't be a production VM.

Creare un nuovo runbookCreate new runbook

Si inizia creando un runbook semplice che restituisce il testo Hello World.You start by creating a simple runbook that outputs the text Hello World.

  1. Nel portale di Azure aprire l'account di automazione.In the Azure portal, open your Automation account.
  2. Fare clic su Runbook in Automazione processi per aprire l'elenco dei runbook.Click Runbooks under Process Automation to open the list of runbooks.
  3. Creare un nuovo runbook facendo clic sul pulsante + Aggiungi runbook e quindi su Crea un nuovo runbook.Create a new runbook by clicking the + Add a runbook button and then Create a new runbook.
  4. Denominare il runbook MyFirstRunbook-PowerShell.Give the runbook the name MyFirstRunbook-PowerShell.
  5. In questo caso si sta creando un runbook PowerShell, quindi selezionare Powershell per Tipo di runbook.In this case, you're going to create a PowerShell runbook so select Powershell for Runbook type.
  6. Fare clic su Crea per creare il runbook e aprire l'editor di testo.Click Create to create the runbook and open the textual editor.

Aggiungere un codice al runbookAdd code to the runbook

È possibile digitare il codice direttamente nel runbook, oppure è possibile selezionare i cmdlet, i runbook e le risorse dal controllo della libreria e aggiungerle al runbook con tutti i parametri correlati.You can either type code directly into the runbook, or you can select cmdlets, runbooks, and assets from the Library control and have them added to the runbook with any related parameters. Per questa procedura dettagliata si digiterà direttamente nel runbook.For this walkthrough, you type directly in the runbook.

  1. Il runbook è attualmente vuoto; digitare Write-Output "Hello World."Your runbook is currently empty, type Write-Output "Hello World." nel corpo dello script.in the body of the script.

    Hello World

  2. Salvare il runbook facendo clic su Salva.Save the runbook by clicking Save.

Testare il runbook Test the runbook

Prima di pubblicare il runbook per renderlo disponibile nell'ambiente di produzione, occorre testarlo per verificare che funzioni correttamente.Before you publish the runbook to make it available in production, you want to test it to make sure that it works properly. Quando si testa un runbook, è necessario eseguire la versione Bozza e visualizzarne l'output in modo interattivo.When you test a runbook, you run its Draft version and view its output interactively.

  1. Fare clic su Pannello di test per aprire il pannello di test.Click Test pane to open the Test pane.
  2. Fare clic su Avvia per avviare il test.Click Start to start the test. Questa deve essere l'unica opzione abilitata.This should be the only enabled option.
  3. Viene creato un processo del runbook e il relativo stato viene visualizzato.A runbook job is created and its status displayed.

    Lo stato del processo sarà inizialmente In coda a indicare che è in attesa della disponibilità di un ruolo di lavoro per runbook nel cloud.The job status starts as Queued indicating that it's waiting for a runbook worker in the cloud to come available. Lo stato passa ad Avvio in corso quando un ruolo di lavoro richiede il processo e quindi a In esecuzione quando l'esecuzione del runbook viene effettivamente avviata.It moves to Starting when a worker claims the job, and then Running when the runbook actually starts running.

  4. Al termine del processo del runbook, viene visualizzato l'output.When the runbook job completes, its output is displayed. In questo caso dovrebbe essere visualizzato Hello World.In your case, you should see Hello World.

    Output del riquadro di test

  5. Chiudere il riquadro di test per tornare all'area di disegno.Close the Test pane to return to the canvas.

Pubblicare e avviare il runbookPublish and start the runbook

Il runbook creato è ancora in modalità bozza.The runbook that you created is still in Draft mode. È necessario pubblicarlo prima di poterlo eseguire in produzione.It must be published before you can run it in production. Quando si pubblica un runbook, è possibile sovrascrivere la versione pubblicata esistente con la versione bozza.When you publish a runbook, you overwrite the existing Published version with the Draft version. In questo caso non esiste ancora una versione pubblicata perché il runbook è appena stato creato.In your case, you don't have a Published version yet because you just created the runbook.

  1. Fare clic su Pubblica per pubblicare il runbook, quindi su quando richiesto.Click Publish to publish the runbook and then Yes when prompted.
  2. Se si scorre verso sinistra per visualizzare il runbook nella pagina Runbook, come Stato di creazione viene visualizzato Pubblicato.If you scroll left to view the runbook in the Runbooks pane now, it shows an Authoring Status of Published.
  3. Scorrere verso destra per visualizzare il riquadro MyFirstRunbook-PowerShell.Scroll back to the right to view the pane for MyFirstRunbook-PowerShell.
    Le opzioni nella parte superiore consentono di avviare il runbook, visualizzarlo, pianificarlo per l'avvio in un momento successivo o creare un webhook per poterlo avviare con una chiamata HTTP.The options across the top allow us to start the runbook, view the runbook, schedule it to start at some time in the future, or create a webhook so it can be started through an HTTP call.
  4. Per avviare il runbook, fare clic su Avvia e quindi su OK quando si apre la pagina Avvia runbook.You want to start the runbook, so click Start and then click Ok when the Start Runbook page opens.
  5. Verrà aperta una pagina per il processo del runbook creato.A job page is opened for the runbook job that you created. È possibile chiudere questo riquadro, ma in questo caso lo si lascerà aperto per poter controllare lo stato del processo.You can close this pane, but in this case you leave it open so you can watch the job's progress.
  6. Lo stato del processo è visualizzato in Riepilogo processi e corrisponde agli stati osservati quando è stato testato il runbook.The job status is shown in Job Summary and matches the statuses that you saw when you tested the runbook.

    Riepilogo dei processi

  7. Quando lo stato del runbook è Completato, in Overview fare clic su Output.Once the runbook status shows Completed, under Overview click Output. Viene aperto il riquadro Output dove si può vedere il testo Hello World.The Output pane is opened, and you can see your Hello World.

    Output del processo

  8. Chiudere la pagina Output.Close the Output page.

  9. Fare clic su Tutti i log per aprire il riquadro Flussi relativo al processo del runbook.Click All Logs to open the Streams pane for the runbook job. Nel flusso di output dovrebbe essere visibile solo Hello World, ma potrebbero essere visualizzati altri flussi per un processo del runbook, ad esempio Verbose ed Error se il runbook scrive in questi flussi.You should only see Hello World in the output stream, but this output can show other streams for a runbook job such as Verbose and Error if the runbook writes to them.

    Tutti i log

  10. Chiudere la finestra Flussi e la pagina dei processi per tornare alla pagina MyFirstRunbook-PowerShell.Close the Streams page and the Job page to return to the MyFirstRunbook-PowerShell page.

  11. In Dettagli fare clic su Processi per aprire la pagina dei processi per questo runbook.Under Details, click Jobs to open the Jobs pane for this runbook. In questa pagina sono elencati tutti i processi creati da questo runbook.This page lists all of the jobs created by this runbook. Dovrebbe essere elencato un solo processo, perché il processo è stato eseguito una sola volta.You should only see one job listed since you only ran the job once.

    Elenco dei processi

  12. È possibile fare clic su questo processo per aprire lo stesso pannello visualizzato quando è stato avviato il runbook.You can click this job to open the same Job pane that you viewed when you started the runbook. Questa azione consente di tornare indietro nel tempo e visualizzare i dettagli di tutti i processi creati per un runbook particolare.This action allows you to go back in time and view the details of any job that was created for a particular runbook.

Aggiungere l'autenticazione per gestire le risorse di AzureAdd authentication to manage Azure resources

Il runbook è stato testato e pubblicato, ma finora non esegue alcuna attività utile.You've tested and published your runbook, but so far it doesn't do anything useful. Si vuole fare in modo che gestisca le risorse di Azure.You want to have it manage Azure resources. Non è in grado di eseguire questa operazione a meno che non venga autenticato con una connessione RunAs che viene creata automaticamente quando si crea l'account di Automazione.It is not able to do that though unless You have it authenticate using a Run As connection that is automatically created when you create your automation account. La connessione RunAs viene usata con il cmdlet Connect-AzureRmAccount.You use the Run As connection with the Connect-AzureRmAccount cmdlet. Se si gestiscono risorse in più sottoscrizioni, è necessario usare il parametro -AzureRmContext con Get-AzureRmContext.If you are managing resources across multiple subscriptions, you need to use the -AzureRmContext parameter along with Get-AzureRmContext.

$connection = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzureRmAccount -ServicePrincipal -Tenant $connection.TenantID `
-ApplicationID $connection.ApplicationID -CertificateThumbprint $connection.CertificateThumbprint

$AzureContext = Select-AzureRmSubscription -SubscriptionId $connection.SubscriptionID

Get-AzureRmVM -ResourceGroupName myResourceGroup -AzureRmContext $AzureContext
  1. Aprire l'editor di testo facendo clic su Modifica nella pagina MyFirstRunbook-PowerShell.Open the textual editor by clicking Edit on the MyFirstRunbook-PowerShell page.
  2. Non è più necessaria la riga Write-Output, quindi andare avanti ed eliminarla.You don't need the Write-Output line anymore, so go ahead and delete it.
  3. Digitare o copiare e incollare il codice seguente che gestisce l'autenticazione con l'account RunAs di Automazione:Type or copy and paste the following code that handles the authentication with your Automation Run As account:

    $connection = Get-AutomationConnection -Name AzureRunAsConnection
    Connect-AzureRmAccount -ServicePrincipal -Tenant $connection.TenantID `
    -ApplicationId $connection.ApplicationID -CertificateThumbprint $connection.CertificateThumbprint
    

    Importante

    Add-AzureRmAccount e Login-AzureRmAccount sono ora alias per Connect-AzureRMAccount. Se il cmdlet Connect-AzureRMAccount non esiste, è possibile usare Add-AzureRmAccount o Login-AzureRmAccount oppure aggiornare i moduli nell'account di Automazione alle versioni più recenti.

  4. Fare clic su Riquadro di test in modo da testare il runbook.Click Test pane so that you can test the runbook.

  5. Fare clic su Avvia per avviare il test.Click Start to start the test. Al termine verrà visualizzato un output simile al seguente, con le informazioni di base sull'account.Once it completes, you should receive output similar to the following, displaying basic information from your account. Questo output conferma che l'account RunAs è valido.This output confirms that the Run As Account is valid.

    Autentica

Aggiungere il codice per avviare una macchina virtualeAdd code to start a virtual machine

Ora che il runbook esegue l'autenticazione per la sottoscrizione di Azure è possibile gestire le risorse.Now that your runbook is authenticating to your Azure subscription, you can manage resources. Si aggiunge un comando per avviare una macchina virtuale.You add a command to start a virtual machine. È possibile selezionare una macchina virtuale qualsiasi nella sottoscrizione di Azure. Per ora il nome sarà hardcoded nel runbook.You can pick any virtual machine in your Azure subscription, and for now you hardcode that name in the runbook.

  1. Dopo Connect-AzureRmAccount digitare Start-AzureRmVM -Name 'NomeVM' -ResourceGroupName 'NomeGruppoDiRisorse' specificando il nome e il nome del gruppo di risorse della macchina virtuale da avviare.After Connect-AzureRmAccount, type Start-AzureRmVM -Name 'VMName' -ResourceGroupName 'NameofResourceGroup' providing the name and Resource Group name of the virtual machine to start.

    $connection = Get-AutomationConnection -Name AzureRunAsConnection
    Connect-AzureRmAccount -ServicePrincipal -Tenant $connection.TenantID `
    -ApplicationID $connection.ApplicationID -CertificateThumbprint $connection.CertificateThumbprint
    Start-AzureRmVM -Name 'VMName' -ResourceGroupName 'ResourceGroupName'
    
  2. Salvare il runbook e poi fare clic su Riquadro di test in modo da poterne eseguire il test.Save the runbook and then click Test pane so that you can test it.

  3. Fare clic su Avvia per avviare il test.Click Start to start the test. Dopo aver completato l'attività, controllare che la macchina virtuale sia stata avviata.Once it completes, check that the virtual machine was started.

Aggiungere un parametro di inputAdd an input parameter

Ora il runbook avvia la macchina virtuale specificata nel runbook, ma sarebbe più utile se si potesse specificare la macchina virtuale quando si avvia il runbook.Your runbook currently starts the virtual machine that you hardcoded in the runbook, but it would be more useful if you specify the virtual machine when the runbook is started. Per fornire questa funzionalità, si aggiungeranno dei parametri di input al runbook.You add input parameters to the runbook to provide that functionality.

  1. Aggiungere parametri per VMName e ResourceGroupName al runbook e usare queste variabili con il cmdlet Start-AzureRmVM come nell'esempio seguente.Add parameters for VMName and ResourceGroupName to the runbook and use these variables with the Start-AzureRmVM cmdlet as in the following example.

    Param(
     [string]$VMName,
     [string]$ResourceGroupName
    )
    $connection = Get-AutomationConnection -Name AzureRunAsConnection
    Connect-AzureRmAccount -ServicePrincipal -Tenant $connection.TenantID `
    -ApplicationID $connection.ApplicationID -CertificateThumbprint $connection.CertificateThumbprint
    Start-AzureRmVM -Name $VMName -ResourceGroupName $ResourceGroupName
    
  2. Salvare il runbook e aprire il riquadro Test.Save the runbook and open the Test pane. È ora possibile fornire i valori per le due variabili di input usate nel test.You can now provide values for the two input variables that are used in the test.

  3. Chiudere il riquadro Test.Close the Test pane.
  4. Fare clic su Pubblica per pubblicare la nuova versione del runbook.Click Publish to publish the new version of the runbook.
  5. Arrestare la macchina virtuale avviata nel passaggio precedente.Stop the virtual machine that you started in the previous step.
  6. Fare clic su OK per avviare il runbook.Click OK to start the runbook. Digitare VMName e ResourceGroupName per la macchina virtuale da avviare.Type in the VMName and ResourceGroupName for the virtual machine that you're going to start.

    Passare i parametriPass Parameter
  7. Quando il runbook viene completato, controllare che la macchina virtuale sia stata avviata.When the runbook completes, check that the virtual machine was started.

Differenze rispetto al flusso di lavoro PowerShellDifferences from PowerShell Workflow

I runbook PowerShell hanno lo stesso ciclo di vita, le stesse funzionalità e la stessa modalità di gestione dei runbook Flusso di lavoro PowerShell, ma con alcune differenze e limitazioni:PowerShell runbooks have the same lifecycle, capabilities, and management as PowerShell Workflow runbooks but there are some differences and limitations:

  1. L'esecuzione dei runbook PowerShell è più rapida rispetto ai runbook Flusso di lavoro PowerShell, perché non prevedono un passaggio di compilazione.PowerShell runbooks run fast compared to PowerShell Workflow runbooks as they don’t have compilation step.
  2. I runbook del flusso di lavoro PowerShell supportano i checkpoint. L'uso dei checkpoint consente ai runbook del flusso di lavoro PowerShell di riprendere da qualsiasi punto del runbook.PowerShell Workflow runbooks support checkpoints, using checkpoints, PowerShell Workflow runbooks can resume from any point in the runbook. I runbook di PowerShell possono riprendere solo dall'inizio.PowerShell runbooks can only resume from the beginning.
  3. I runbook del flusso di lavoro PowerShell supportano l'esecuzione parallela e seriale.PowerShell Workflow runbooks support parallel and serial execution. I runbook di PowerShell possono solo eseguire i comandi in modo seriale.PowerShell runbooks can only execute commands serially.
  4. In un runbook del flusso di lavoro PowerShell, un'attività, un comando o un blocco di script possono avere un proprio spazio di esecuzione.In a PowerShell Workflow runbook, an activity, a command, or a script block can have its own runspace. In un runbook di PowerShell tutti gli elementi in uno script vengono eseguiti in un singolo spazio di esecuzione.In a PowerShell runbook, everything in a script runs in a single runspace. Esistono anche differenze di sintassi tra un runbook PowerShell nativo e un runbook Flusso di lavoro PowerShell.There are also some syntactic differences between a native PowerShell runbook and a PowerShell Workflow runbook.

Passaggi successiviNext steps