Condividi tramite


Risolvere i problemi relativi ai runbook

Questo articolo descrive i problemi che possono verificarsi quando si eseguono i runbook e offre indicazioni su come risolverli. Per informazioni generali, vedere Esecuzione di runbook in Automazione di Azure.

Non è più possibile usare i cmdlet da moduli non predefiniti importati nei runbook grafici di PowerShell

Problema

Quando si importa un modulo di PowerShell, non sarà possibile usare i relativi cmdlet nei runbook grafici di PowerShell.

Causa

Per migliorare il comportamento di sicurezza dei runbook di PowerShell, il servizio non elabora più il file manifesto del modulo per esportare i cmdlet e le funzioni. Ciò significa che non possono essere usati durante la creazione di runbook grafici di PowerShell.

Risoluzione

Non c'è alcun impatto sull'esecuzione di runbook esistenti. Per i nuovi runbook che usano moduli powerShell non predefiniti, è consigliabile usare runbook testuali anziché runbook grafici di PowerShell per risolvere questo problema. È possibile usare l'estensione Automazione di Azure per VScode per la creazione e la modifica di runbook di PowerShell, che sfrutta GitHub Copilot per semplificare l'esperienza di creazione dei runbook.

Start-AzAutomationRunbook ha esito negativo e viene visualizzato il messaggio di errore "runbookName non corrisponde al modello previsto"

Problema

Quando si esegue Start-AzAutomationRunbook per avviare runbook specifici:

start-azautomationRunbook -Name "Test_2" -AutomationAccountName "AutomationParent" -ResourceGroupName "AutomationAccount" 

L'azione non va a buon fine e viene mostrato l'errore seguente:

Start-AzAutomationRunbook: "runbookname" does not match expected pattern '^[a-zA-Z]*-*[a-zA-Z0-9]*$'

Causa

Il codice introdotto nella versione 1.9.0 del modulo Az.Automation verifica i nomi dei runbook per avviare e contrassegnare erroneamente i runbook con più caratteri "-" o con un carattere "_" nel nome come non validi.

Soluzione alternativa

È consigliabile ripristinare la versione 1.8.0 del modulo.

Risoluzione

Attualmente, stiamo lavorando per distribuire una correzione per risolvere questo problema.

Diagnosticare i problemi dei runbook

Quando vengono visualizzati errori durante l'esecuzione dei runbook in Automazione di Azure, è possibile seguire questa procedura per diagnosticare i problemi:

  1. Verificare che lo script dei runbook venga eseguito correttamente nel computer locale.

    Per le informazioni di riferimento sul linguaggio e i moduli di apprendimento, vedere la documentazione di PowerShell o la documentazione di Python. Quando si esegue lo script localmente, è possibile individuare e risolvere errori comuni, ad esempio quelli relativi a:

    • Moduli mancanti
    • Errori di sintassi
    • Errori di logica
  2. Esaminare i flussi di errore del runbook.

    Esaminare i flussi di errore per individuare specifici messaggi e confrontarli con gli errori descritti nell'articolo.

  3. Verificare che per i nodi e per l'area di lavoro di Automazione siano disponibili i moduli necessari.

    Se il runbook importa tutti i moduli, verificare che siano disponibili per l'account di Automazione seguendo la procedura descritta in Importare i moduli. Aggiornare i moduli PowerShell all’ultima versione seguendo le istruzioni riportate in Aggiornare i moduli Azure PowerShell in Automazione di Azure. Per altre informazioni sulla risoluzione di problemi, vedere Risolvere i problemi relativi ai moduli.

  4. Se il runbook viene sospeso o termina in modo imprevisto:

  5. Eseguire questo passaggio se il processo del runbook o l'ambiente nel ruolo di lavoro ibrido per runbook non risponde.

    Se i runbook vengono eseguiti in un ruolo di lavoro ibrido per runbook invece che in Automazione di Azure, potrebbe essere necessario risolvere i problemi relativi al ruolo di lavoro ibrido.

Scenario: Non è possibile creare un nuovo processo di Automazione nell'area Europa occidentale

Problema

Quando si creano nuovi processi di Automazione, è possibile che si verifichi un ritardo o un errore di creazione del processo. I processi pianificati verranno ritirati automaticamente e i processi eseguiti tramite il portale possono essere ritirati in caso di errore.

Causa

Ciò è dovuto al carico elevato dei runbook dei clienti che usano il servizio di automazione nell'area Europa occidentale.

Risoluzione

Eseguire una delle azioni seguenti se è possibile in base alle esigenze e all'ambiente per ridurre la probabilità di errore:

  • Se si usa la parte superiore dell'ora per la creazione del processo (alle 12:00, alle 13:00, alle 14:00 e così via), in genere con impostazioni di un'ora o di mezz'ora, è consigliabile spostare l'ora di inizio del processo su cinque minuti prima o dopo l'ora/mezz'ora. Ciò è dovuto al fatto che la maggior parte dei clienti usa l'inizio dell'ora per l'esecuzione del processo, aumentando così drasticamente il carico sul servizio, mentre il carico è relativamente basso nelle altre fasce orarie.

Scenario: Il runbook ha esito negativo con il messaggio di errore "this.Client.SubscriptionId non può essere Null"

Problema

Il runbook usa un'identità gestita Connect-AzAccount -Identity che prova a gestire gli oggetti di Azure, ma non funziona correttamente e registra l'errore - this.Client.SubscriptionId cannot be null.

get-azvm : 'this.Client.SubscriptionId' cannot be null. At line:5 char:1 + get-azvm + ~~~~~~~~ + CategoryInfo : CloseError: (:) [Get-AzVM], ValidationException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.GetAzureVMCommand

Causa

Questo errore può verificarsi quando all'Identità gestita (o a un altro account usato nel runbook) non sono state concesse autorizzazioni per accedere alla sottoscrizione.

Risoluzione

Concedere all'identità gestita (o a un altro account usato nel runbook) un'appartenenza al ruolo appropriata nella sottoscrizione. Ulteriori informazioni

 Screenshot che mostra l'assegnazione di assegnazioni di ruolo di Azure.

Screenshot che mostra come aggiungere un'assegnazione di ruolo.

Scenario: accesso bloccato ad Archiviazione di Azure, Azure Key Vault o Azure SQL

Questo scenario usa Archiviazione di Azure come esempio; tuttavia, le informazioni sono ugualmente applicabili ad Azure Key Vault e Azure SQL.

Problema

Il tentativo di accedere ad Archiviazione di Azure da un runbook genera un errore simile al messaggio seguente: The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request is not authorized to perform this operation.

Causa

Il Firewall di Azure in Azure SQL è abilitato.

Risoluzione

L'abilitazione del Firewall di Azure in Archiviazione di Azure, Azure Key Vault o Azure SQL blocca l'accesso dai runbook di Automazione di Azure per tali servizi. L'accesso verrà bloccato anche quando l'eccezione del firewall per consentire i servizi Microsoft attendibili è abilitata, perché Automazione non fa parte dell'elenco dei servizi attendibili. Con un firewall abilitato, l'accesso può essere ottenuto solo usando un ruolo di lavoro ibrido per runbook e un endpoint servizio di rete virtuale.

Scenario: il runbook ha esito negativo e viene visualizzato l'errore 403 Nessuna autorizzazione o Accesso negato

Problema

Il runbook ha esito negativo e viene visualizzato l'errore 403 per indicare che manca l'autorizzazione necessaria, l'operazione non è consentita o un errore equivalente.

Causa

Le autorizzazioni degli account RunAs per le risorse di Azure potrebbero non essere uguali a quelle dell'account di Automazione corrente.

Risoluzione

Verificare che l'account RunAs abbia le autorizzazioni per accedere a tutte le risorse usate nello script.

Scenario: accesso all'account Azure non riuscito

Problema

Quando si usa il cmdlet Connect-AzAccount, viene visualizzato uno degli errori seguenti:

Unknown_user_type: Unknown User Type
No certificate was found in the certificate store with thumbprint

Causa

Questi errori si verificano se il nome dell'asset delle credenziali non è valido o se non sono validi il nome utente e la password usati per impostare l'asset delle credenziali di Automazione.

Risoluzione

Per individuare la causa del problema, seguire questa procedura:

  1. Verificare che non siano stati inclusi caratteri speciali, ad esempio \@, nel nome dell'asset delle credenziali di Automazione usato per connettersi ad Azure.

  2. Verificare di poter usare il nome utente e la password archiviati nelle credenziali di Automazione di Azure nell'editor locale di PowerShell ISE. In PowerShell ISE digitare i cmdlet seguenti.

    $Cred = Get-Credential
    #Using Azure Service Management
    Add-AzureAccount -Credential $Cred
    #Using Azure Resource Manager
    Connect-AzAccount -Credential $Cred
    
  3. Se l'autenticazione ha esito negativo in locale, le credenziali di Microsoft Entra non sono state configurate correttamente. Per configurare correttamente l'account Microsoft Entra, consultare l'articolo Eseguire l'autenticazione in Azure con Microsoft Entra ID.

  4. L'errore potrebbe essere temporaneo. In caso, provare ad aggiungere la logica di ripetizione alla routine di autenticazione per rendere più affidabile l'autenticazione.

    $logonAttempt = 0
    $logonResult = $False
    
    while(!($connectionResult) -And ($logonAttempt -le 10))
    {
        $LogonAttempt++
        #Logging in to Azure...
        $connectionResult = Connect-AzAccount `
        Start-Sleep -Seconds 30
        if($connectionResult)
        {
           $logonResult = $True 
        }
    }
    

Scenario: eseguire Login-AzureRmAccount per accedere

Problema

Quando si esegue un runbook, viene visualizzato l'errore seguente:

Run Login-AzureRMAccount to login.

Causa

Questo errore può verificarsi quando non si usa un account RunAs o quando l'account RunAs è scaduto.

Le principali cause di questo errore sono due:

  • Sono presenti versioni diverse del modulo AzureRM o Az.
  • Si sta provando ad accedere alle risorse in una sottoscrizione separata.

Risoluzione

Se questo errore viene visualizzato dopo l'aggiornamento di un modulo AzureRM o Az, aggiornare tutti i moduli alla stessa versione.

Se si sta provando ad accedere alle risorse in un'altra sottoscrizione, configurare le autorizzazioni seguendo questa procedura:

  1. Accedere all'account RunAs di Automazione e copiare i valori di ID applicazione e Identificazione personale.

    Copiare ID applicazione e Identificazione personale

  2. Accedere alla pagina Controllo di accesso della sottoscrizione che non ospita l'account di Automazione e aggiungere una nuova assegnazione di ruolo.

    Controllo di accesso

  3. Aggiungere il valore di ID applicazione copiato in precedenza. Selezionare le autorizzazioni di Collaboratore.

    Aggiungi un'assegnazione di ruolo

  4. Copiare il nome della sottoscrizione.

  5. È ora possibile usare il codice del runbook seguente per testare le autorizzazioni dell'account di Automazione nell'altra sottoscrizione. Sostituire <CertificateThumbprint> con il valore copiato nel passaggio 1. Sostituire "<SubscriptionName>" con il valore copiato nel passaggio 4.

    $Conn = Get-AutomationConnection -Name AzureRunAsConnection
    Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint "<CertificateThumbprint>"
    #Select the subscription you want to work with
    Select-AzSubscription -SubscriptionName '<YourSubscriptionNameGoesHere>'
    
    #Test and get outputs of the subscriptions you granted access.
    $subscriptions = Get-AzSubscription
    foreach($subscription in $subscriptions)
    {
        Set-AzContext $subscription
        Write-Output $subscription.Name
    }
    

Scenario: Non è possibile trovare la sottoscrizione di Azure

Problema

Quando si usa il cmdlet Select-AzureSubscription, Select-AzureRMSubscription o Select-AzSubscription, viene visualizzato l'errore seguente:

The subscription named <subscription name> cannot be found.

Error

Questo errore si verifica nei casi seguenti:

  • Il nome della sottoscrizione non è valido.
  • L'utente di Microsoft Entra che sta provando a ottenere i dettagli della sottoscrizione non è configurato come amministratore della sottoscrizione.
  • Il cmdlet non è disponibile.
  • Si è verificato un cambio di contesto.

Risoluzione

Per il cambio di contesto, vedere Cambio di contesto in Automazione di Azure.

Scenario: i runbook hanno esito negativo quando si gestiscono più sottoscrizioni

Problema

Durante l'esecuzione dei runbook, il runbook non riesce a gestire le risorse di Azure.

Causa

Il runbook non usa il contesto corretto durante l'esecuzione. Ciò può essere dovuto al fatto che il runbook tenta accidentalmente di accedere alla sottoscrizione non corretta.

È possibile che vengano visualizzati errori come questo:

Get-AzVM : The client '<client-id>' with object id '<object-id> does not have authorization to perform action 'Microsoft.Compute/virtualMachines/read' over scope '/subscriptions/<subcriptionIdOfSubscriptionWichDoesntContainTheVM>/resourceGroups/REsourceGroupName/providers/Microsoft.Compute/virtualMachines/VMName '.
   ErrorCode: AuthorizationFailed
   StatusCode: 403
   ReasonPhrase: Forbidden Operation
   ID : <AGuidRepresentingTheOperation> At line:51 char:7 + $vm = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $UNBV... +

o come questo:

Get-AzureRmResource : Resource group "SomeResourceGroupName" could not be found.
... resources = Get-AzResource -ResourceGroupName $group.ResourceGro ...
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Get-AzResource], CloudException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResourceCmdlet

Risoluzione

Per evitare di tentare accidentalmente di accedere alla sottoscrizione non corretta, vedere Cambio di contesto in Automazione di Azure.

Scenario: l'autenticazione in Azure ha esito negativo perché è abilitata l'autenticazione a più fattori

Problema

Quando si esegue l'autenticazione ad Azure usando il nome utente e la password di Azure, viene visualizzato l'errore seguente:

Add-AzureAccount: AADSTS50079: Strong authentication enrollment (proof-up) is required

Causa

Se per l'account di Azure è abilitata l'autenticazione a più fattori, non è possibile usare un utente di Microsoft Entra per eseguire l'autenticazione ad Azure. È invece necessario usare un certificato o un'entità servizio.

Risoluzione

Per usare un'entità servizio con i cmdlet di Azure Resource Manager, vedere Creazione di un'entità servizio tramite il portale di Azure e Autenticazione di un'entità servizio con Azure Resource Manager.

Scenario: esito negativo del runbook con messaggio di errore "Un'attività è stata annullata"

Problema

Il runbook ha esito negativo con un errore simile all'esempio seguente:

Exception: A task was cancelled.

Causa

Questo errore può essere causato dall'utilizzo di moduli di Azure non aggiornati.

Risoluzione

È possibile risolvere questo errore aggiornando i moduli di Azure alla versione più recente:

  1. Nell'account di Automazione selezionare Moduli e quindi Aggiorna moduli di Azure.
  2. Per l'aggiornamento sono necessari circa 15 minuti. Al completamento dell'aggiornamento, eseguire di nuovo il runbook di cui era stato segnalato l'esito negativo.

Per altre informazioni sull'aggiornamento dei moduli, vedere Aggiornare i moduli di Azure in Automazione di Azure.

Scenario: il termine non è riconosciuto come nome di cmdlet, funzione o script

Problema

Il runbook ha esito negativo con un errore simile all'esempio seguente:

The term 'Connect-AzAccount' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if the path was included verify that the path is correct and try again.

Causa

Questo errore può verificarsi per i motivi seguenti:

  • Il modulo contenente il cmdlet non viene importato nell'account di Automazione.
  • Il modulo contenente il cmdlet viene importato ma non è aggiornato.

Risoluzione

Per correggere l'errore, eseguire una di queste operazioni:

Scenario: Errore del cmdlet nel runbook PowerShell PnP in Automazione di Azure

Problema

Quando un runbook scrive un oggetto generato da PowerShell PnP direttamente nell'output di Automazione di Azure, l'output del cmdlet non può essere ritrasmesso in Automazione.

Causa

Questo problema si verifica in genere quando Automazione di Azure elabora runbook che richiamano cmdlet di PowerShell PnP, ad esempio add-pnplistitem, senza intercettare gli oggetti restituiti.

Risoluzione

Modificare gli script in modo da assegnare tutti i valori restituiti a variabili e impedire quindi che i cmdlet tentino di scrivere oggetti interi nell'output standard. Uno script può reindirizzare la trasmissione dell'output a un cmdlet, come illustrato di seguito.

  $null = add-pnplistitem

Se lo script analizza l'output del cmdlet, deve archiviare l'output in una variabile e modificare la variabile anziché limitarsi a trasmettere l'output.

$SomeVariable = add-pnplistitem ....
if ($SomeVariable.someproperty -eq ....

Scenario: Cmdlet non riconosciuto durante l'esecuzione di un runbook

Problema

Il processo del runbook ha esito negativo con errore:

<cmdlet name>: The term <cmdlet name> is not recognized as the name of a cmdlet, function, script file, or operable program.

Causa

Questo errore si verifica quando il motore di PowerShell non trova il cmdlet utilizzato nel runbook. È possibile che il modulo che contiene il cmdlet non sia presente nell'account, che si sia generato un conflitto con il nome di un runbook o che il cmdlet sia incluso anche in un altro modulo e Automazione non possa risolvere il nome.

Risoluzione

Per correggere il problema, scegliere una di queste soluzioni:

  • Verificare di aver immesso correttamente il nome del cmdlet.
  • Verificare che il cmdlet sia incluso nell'account di Automazione e che non siano presenti conflitti. Per verificare la presenza del cmdlet, aprire un runbook in modalità di modifica e cercare il cmdlet nella libreria o eseguire Get-Command <CommandName>. Dopo aver verificato la disponibilità del cmdlet nell'account ed essersi assicurati che non sono presenti conflitti di nome con altri cmdlet o runbook, aggiungere il cmdlet al canvas. Verificare di usare un set di parametri valido nel runbook.
  • Se è presente un conflitto di nome e il cmdlet è disponibile in due moduli diversi, risolvere il problema usando il nome completo del cmdlet. Ad esempio, è possibile usare ModuleName\CmdletName.
  • Se i runbook vengono eseguiti localmente in un gruppo di ruoli di lavoro ibridi, verificare che il modulo e il cmdlet siano installati nel computer che ospita il ruolo di lavoro ibrido.

Scenario: Riferimento a un oggetto non corretto nella chiamata ad Add-AzAccount

Problema

Questo errore viene visualizzato quando si lavora con Add-AzAccount, che è un alias per il cmdlet Connect-AzAccount:

Add-AzAccount : Object reference not set to an instance of an object

Causa

Questo errore può verificarsi se il runbook non esegue i passaggi appropriati prima di chiamare Add-AzAccount per l'aggiunta dell'account di Automazione. Tra i passaggi necessari è ad esempio incluso l'accesso con un account RunAs. Per informazioni sulle operazioni corrette da eseguire nel runbook, vedere Esecuzione di runbook in Automazione di Azure.

Scenario: riferimento a un oggetto non impostato su un'istanza di un oggetto

Problema

L'errore seguente viene visualizzato quando si chiama un runbook figlio tramite il parametro Wait e il flusso di output contiene un oggetto:

Object reference not set to an instance of an object

Causa

Se il flusso contiene oggetti, Start-AzAutomationRunbook non gestisce correttamente il flusso di output.

Risoluzione

Implementare una logica di polling e usare il cmdlet Get-AzAutomationJobOutput per recuperare l'output. Di seguito è riportato un esempio di questa logica:

$AutomationAccountName = "ContosoAutomationAccount"
$RunbookName = "ChildRunbookExample"
$ResourceGroupName = "ContosoRG"

function IsJobTerminalState([string]$Status) {
  $TerminalStates = @("Completed", "Failed", "Stopped", "Suspended")
  return $Status -in $TerminalStates
}

$StartAzAutomationRunbookParameters = @{
  Name = $RunbookName
  AutomationAccountName = $AutomationAccountName
  ResourceGroupName = $ResourceGroupName
}
$Job = Start-AzAutomationRunbook @StartAzAutomationRunBookParameters
$PollingSeconds = 5
$MaxTimeout = New-TimeSpan -Hours 3 | Select-Object -ExpandProperty TotalSeconds
$WaitTime = 0
while(-NOT (IsJobTerminalState $Job.Status) -and $WaitTime -lt $MaxTimeout) {
   Start-Sleep -Seconds $PollingSeconds
   $WaitTime += $PollingSeconds
   $Job = $Job | Get-AzAutomationJob
}

$Job | Get-AzAutomationJobOutput | Get-AzAutomationJobOutputRecord | Select-Object -ExpandProperty Value

Scenario: Runbook con esito negativo a causa di un oggetto deserializzato

Problema

Il runbook ha esito negativo con errore:

Cannot bind parameter <ParameterName>.

Cannot convert the <ParameterType> value of type Deserialized <ParameterType> to type <ParameterType>.

Causa

Se il runbook è un flusso di lavoro di PowerShell, archivia gli oggetti complessi in un formato deserializzato per rendere persistente lo stato del runbook quando il flusso di lavoro viene sospeso.

Risoluzione

Per correggere il problema, scegliere una di queste soluzioni:

  • Se si stanno inviando oggetti complessi da un cmdlet a un altro cmdlet tramite pipe, eseguire il wrapping di questi cmdlet in un'attività InlineScript.
  • Passare il nome o il valore necessario dall'oggetto complesso invece di passare l'intero oggetto.
  • Usare un runbook di PowerShell invece di un runbook del flusso di lavoro PowerShell.

Scenario: stato con errore 400 Richiesta non valida durante la chiamata di un webhook

Problema

Quando si prova a richiamare un webhook per un runbook di Automazione di Azure, viene visualizzato l'errore seguente:

400 Bad Request : This webhook has expired or is disabled

Causa

Il webhook che si sta tentando di chiamare è disabilitato o scaduto.

Risoluzione

Se il webhook è disattivato, è possibile riabilitarlo tramite il portale di Azure. Se il webhook è scaduto, è necessario eliminarlo e ricrearlo. Il rinnovo di un webhook è possibile solo se il webhook non è scaduto.

Scenario: 429: la frequenza delle richieste è attualmente troppo elevata

Problema

Quando si esegue il cmdlet Get-AzAutomationJobOutput viene visualizzato il messaggio di errore seguente:

429: The request rate is currently too large. Please try again

Causa

Questo errore può verificarsi durante il recupero dell'output del processo da un runbook con numerosi flussi dettagliati.

Risoluzione

Per correggere l'errore, eseguire una di queste operazioni:

  • Modificare il runbook riducendo il numero di flussi del processo generati dal runbook stesso.
  • Ridurre il numero di flussi da recuperare all'esecuzione del cmdlet. A tale scopo, è possibile impostare il valore del parametro Stream per il cmdlet Get-AzAutomationJobOutput in modo che vengano recuperati solo flussi di output. ​

Scenario :Processo runbook non riuscito per superamento della quota allocata

Problema

Il processo del runbook ha esito negativo con errore:

The quota for the monthly total job run time has been reached for this subscription

Causa

Questo errore si verifica quando l'esecuzione del processo supera la quota disponibile di 500 minuti per l'account. Questa quota si applica a tutti i tipi di attività di esecuzione di processi, ad esempio il test di un processo, l'avvio di un processo dal portale, l'esecuzione di un processo tramite webhook o la pianificazione di un processo da eseguire tramite il portale di Azure o nel proprio data center. Per altre informazioni sui prezzi relativi all'automazione, vedere Prezzi di Automazione.

Risoluzione

Se si desidera poter usare più di 500 minuti di elaborazione al mese, è necessario modificare la sottoscrizione dal livello gratuito al livello Basic:

  1. Accedere alla sottoscrizione di Azure.
  2. Selezionare l'account di Automazione da aggiornare.
  3. Selezionare Impostazioni e quindi Prezzi.
  4. Selezionare Abilita nella parte inferiore della pagina per aggiornare l'account al livello Basic.

Scenario: Flusso di output del runbook maggiore di 1 MB

Problema

Il runbook in esecuzione nella sandbox di Azure ha esito negativo e viene visualizzato l'errore seguente:

The runbook job failed due to a job stream being larger than 1MB, this is the limit supported by an Azure Automation sandbox.

Causa

Questo errore si verifica perché il runbook ha tentato di scrivere troppi dati di eccezione nel flusso di output.

Risoluzione

È previsto un limite di 1 MB per il flusso di output di un processo. Verificare che il runbook includa le chiamate a un eseguibile o a un sottoprocesso usando i blocchi try e catch. Se le operazioni generano un'eccezione, fare in modo che il codice scriva il messaggio generato dall'eccezione in una variabile di Automazione. Grazie a questo accorgimento, il messaggio non verrà scritto nel flusso di output del processo. Per i processi del ruolo di lavoro ibrido per runbook eseguiti, il flusso di output troncato a 1 MB viene visualizzato senza alcun messaggio di errore.

Scenario: avvio del processo del runbook tentato tre volte con esito negativo ogni volta

Problema

Il runbook ha esito negativo e viene visualizzato l'errore seguente:

The job was tried three times but it failed

Causa

Questo errore si verifica per uno dei problemi seguenti:

  • Limite di memoria. Un processo può aver esito negativo se usa più di 400 MB di memoria. I limiti documentati per la quantità di memoria allocata a una sandbox sono riportati in Limiti del servizio Automazione.

  • Socket di rete. Il limite per le sandbox di Azure è di 1.000 socket di rete simultanei. Per altre informazioni, vedere Limiti del servizio Automazione.

  • Modulo incompatibile. Le dipendenze del modulo potrebbero non essere corrette. In questo caso, il runbook restituisce in genere un messaggio Command not found o Cannot bind parameter.

  • Nessuna autenticazione con Active Directory per sandbox. Il runbook ha tentato di chiamare un eseguibile o un sottoprocesso in esecuzione in una sandbox di Azure. La configurazione dei runbook per l'autenticazione con Microsoft Entra ID tramite la libreria ADAL (Active Directory Authentication Library) di Azure non è supportata.

Risoluzione

  • Limite di memoria, socket di rete. Per assicurarsi di rispettare i limiti di memoria, è ad esempio consigliabile dividere il carico di lavoro tra diversi runbook, elaborare una quantità minore di dati in memoria, evitare di scrivere di output non necessari dai runbook, tenere in considerazione il numero di checkpoint scritti nei runbook del flusso di lavoro PowerShell. Usare il metodo di cancellazione, ad esempio $myVar.clear, per cancellare la variabile e usare [GC]::Collect per eseguire immediatamente Garbage Collection, in modo da ridurre il footprint della memoria durante l'esecuzione dei runbook.

  • Modulo incompatibile. Aggiornare i moduli di Azure eseguendo i passaggi descritti in Aggiornare i moduli Azure PowerShell in Automazione di Azure.

  • Nessuna autenticazione con Active Directory per sandbox. Quando si esegue l'autenticazione per Microsoft Entra ID con un runbook, verificare che il modulo di Azure AD sia disponibile nell'account di Automazione. Assicurarsi di concedere all'account RunAs le autorizzazioni necessarie per eseguire le attività automatizzate dal runbook.

    Se il runbook non è in grado di chiamare un eseguibile o un sottoprocesso in esecuzione in una sandbox di Azure, usare il runbook in un ruolo di lavoro ibrido per runbook. I ruoli di lavoro ibridi non sono soggetti ai limiti di memoria e di rete applicati alle sandbox di Azure.

Scenario: Il processo di PowerShell ha esito negativo e viene visualizzato il messaggio di errore "Impossibile richiamare il metodo"

Problema

Quando si avvia un processo di PowerShell in un runbook in esecuzione in Azure, viene visualizzato il messaggio di errore seguente:

Exception was thrown - Cannot invoke method. Method invocation is supported only on core types in this language mode.

Causa

Questo errore può indicare che i runbook in esecuzione in una sandbox di Azure non possono essere eseguiti in modalità FullLanguage.

Risoluzione

È possibile risolvere questo problema in due modi:

Per altre informazioni su questo e altri comportamenti dei runbook di Automazione di Azure, vedere Esecuzione di runbook in Automazione di Azure.

Scenario: un runbook a esecuzione prolungata non viene completato

Problema

Dopo tre ore di esecuzione, il runbook passa nello stato Arrestato. È anche possibile che venga visualizzato questo errore:

The job was evicted and subsequently reached a Stopped state. The job cannot continue running.

Si tratta di un comportamento predefinito nelle sandbox di Azure, determinato dal monitoraggio della condivisione equa dei processi in Automazione di Azure. Se un processo viene eseguito per oltre tre ore, la condivisione equa arresta automaticamente il runbook. Lo stato su cui viene impostato un runbook che supera il limite di tempo previsto dalla condivisione equa varia a seconda del tipo di runbook. I runbook PowerShell e Python vengono impostati sullo stato Arrestato. I runbook PowerShell del flusso di lavoro vengono impostati su Non riuscito.

Causa

Il runbook ha superato il limite di esecuzione di tre ore consentito dalla condivisione equa in una sandbox di Azure.

Risoluzione

Una soluzione consigliata consiste nell'eseguire il runbook su un ruolo di lavoro ibrido per runbook. I ruoli di lavoro ibridi non sono vincolati al limite di tre ore che la condivisione equa impone sui runbook nelle sandbox di Azure. I runbook che vengono eseguiti in ruoli di lavoro ibridi dovrebbero essere sviluppati per supportare comportamenti di riavvio nel caso in cui si verifichino problemi imprevisti nell'infrastruttura locale.

Un'altra soluzione consiste nell'ottimizzare il runbook creando runbook figlio. Se il runbook esegue la stessa funzione in ciclo in più risorse, ad esempio un'operazione di database in più database, è possibile spostare tale funzione in un runbook figlio. Ciascun runbook figlio verrà eseguito in parallelo in un processo separato. Questo comportamento riduce la quantità totale di tempo per il completamento del runbook padre.

I cmdlet di PowerShell che consentono lo scenario del runbook figlio sono:

  • Start-AzAutomationRunbook, questo cmdlet consente di avviare un runbook e trasmettergli i parametri.
  • Get-AzAutomationJob, questo cmdlet consente di controllare lo stato del processo per ogni runbook figlio e si rivela utile qualora siano presenti operazioni che devono essere eseguite dopo il completamento di un runbook figlio.

Scenario: errore nei flussi del processo per il metodo get_SerializationSettings

Problema

Nei flussi di processo relativi a un runbook viene visualizzato l'errore seguente:

Connect-AzAccount : Method 'get_SerializationSettings' in type
'Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient' from assembly
'Microsoft.Azure.Commands.ResourceManager.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
does not have an implementation.
At line:16 char:1
+ Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -Appl ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Connect-AzAccount], TypeLoadException
    + FullyQualifiedErrorId : System.TypeLoadException,Microsoft.Azure.Commands.Profile.ConnectAzAccountCommand

Causa

Questo errore si è probabilmente verificato perché è stata usata una migrazione incompleta da AzureRM ai moduli Az nel runbook. A causa di questa situazione, è possibile che Automazione di Azure avvii un processo del runbook usando solo moduli AzureRM e quindi un altro processo usando solo moduli Az, con un conseguente arresto anomalo della sandbox.

Risoluzione

Non è consigliabile usare i cmdlet AZ e AzureRM nello stesso runbook. Per altre informazioni sull'uso corretto dei moduli, vedere Eseguire la migrazione a moduli Az.

Scenario: Accesso negato quando si utilizza una sandbox Azure per un runbook o un'applicazione

Problema

Quando viene tentata l'esecuzione del runbook o dell'applicazione in una sandbox di Azure, l'ambiente nega l'accesso.

Causa

Questo problema può verificarsi perché le sandbox di Azure impediscono l'accesso a tutti i server COM out-of-process. Un'applicazione o un runbook in modalità sandbox, ad esempio, non può eseguire chiamate né in Strumentazione gestione Windows (WMI) né nel servizio Windows Installer (MSIServer. exe).

Risoluzione

Per informazioni dettagliate sull'uso delle sandbox di Azure, vedere Ambiente di esecuzione runbook.

Scenario: Il codice di stato Non consentito non è valido quando si usa Key Vault all'interno di un runbook

Problema

Quando si prova ad accedere ad Azure Key Vault tramite un runbook di Automazione di Azure, viene visualizzato l'errore seguente:

Operation returned an invalid status code 'Forbidden'

Causa

Possibili cause di questo problema sono:

  • Mancato uso di un account RunAs.
  • Autorizzazioni insufficienti.

Risoluzione

Mancato uso di un account RunAs

Eseguire il passaggio 5 Aggiungere l'autenticazione per gestire le risorse di Azure per assicurarsi di usare un account RunAs per accedere a Key Vault.

Autorizzazioni insufficienti

Aggiungere autorizzazioni a Key Vault per assicurarsi che l'account RunAs disponga di autorizzazioni sufficienti per accedere a Key Vault.

Scenario: Il runbook ha esito negativo e viene visualizzato l'errore "Lunghezza del parametro superata"

Problema

Il runbook usa parametri e ha esito negativo con il seguente errore:

Total Length of Runbook Parameter names and values exceeds the limit of 30,000 characters. To avoid this issue, use Automation Variables to pass values to runbook.

Causa

Esiste un limite alla lunghezza totale dei caratteri di tutti i parametri che è possibile specificare nei runbook Python 2.7, Python 3.8 e PowerShell 7.1. La lunghezza totale di tutti i nomi di parametro e i valori di parametro non devono superare i 30.000 caratteri.

Risoluzione

Per risolvere questo problema, è possibile usare le variabili di Automazione di Azure per passare valori al runbook. In alternativa, è possibile ridurre il numero di caratteri dei nomi di parametro e dei valori di parametro per assicurarsi che la lunghezza totale non superi i 30.000 caratteri.

Passaggi successivi

Se il problema riscontrato non è presente in questo elenco o non è stato possibile risolverlo, usare uno dei canali seguenti per ricevere ulteriore assistenza:

  • Ottenere risposte dagli esperti di Azure tramite i forum di Azure.
  • Connettersi con @AzureSupport, l'account ufficiale Microsoft Azure per migliorare l'esperienza del cliente. Il supporto tecnico di Azure consente di entrare in contatto con la community di Azure e di ottenere risposte, assistenza e consulenza.
  • Se è necessaria un'assistenza maggiore, è possibile inviare una richiesta al supporto tecnico di Azure. Accedere al sito del supporto tecnico di Azure e selezionare Supporto tecnico.