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:
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
Esaminare i flussi di errore del runbook.
Esaminare i flussi di errore per individuare specifici messaggi e confrontarli con gli errori descritti nell'articolo.
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.
Se il runbook viene sospeso o termina in modo imprevisto:
- Rinnovare il webhook se si sta provando a usare un webhook scaduto per avviare il runbook.
- Controllare gli stati dei processi per determinare gli stati attuali del runbook e individuare alcune possibili cause del problema.
- Aggiungere altro output al runbook per stabilire cosa succede prima che il runbook venga sospeso.
- Gestire tutte le eccezioni generate dal processo.
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
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:
Verificare che non siano stati inclusi caratteri speciali, ad esempio
\@
, nel nome dell'asset delle credenziali di Automazione usato per connettersi ad Azure.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
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.
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:
Accedere all'account RunAs di Automazione e copiare i valori di ID applicazione e Identificazione personale.
Accedere alla pagina Controllo di accesso della sottoscrizione che non ospita l'account di Automazione e aggiungere una nuova assegnazione di ruolo.
Aggiungere il valore di ID applicazione copiato in precedenza. Selezionare le autorizzazioni di Collaboratore.
Copiare il nome della sottoscrizione.
È 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:
- Nell'account di Automazione selezionare Moduli e quindi Aggiorna moduli di Azure.
- 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:
- Se il modulo è un modulo di Azure, vedere Aggiornare i moduli di Azure PowerShell in Automazione di Azure per informazioni su come aggiornare i moduli nell'account di Automazione.
- Se il modulo non è un modulo di Azure, verificare che venga importato nel proprio account di Automazione.
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:
- Accedere alla sottoscrizione di Azure.
- Selezionare l'account di Automazione da aggiornare.
- Selezionare Impostazioni e quindi Prezzi.
- 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
oCannot 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:
- Anziché Start-Job, usare Start-AzAutomationRunbook per avviare il runbook.
- Provare a eseguire il runbook in un ruolo di lavoro ibrido per runbook.
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.
Documenti consigliati
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.