Solución de incidencias de runbooks
En este artículo se describen los errores de runbook que pueden producirse y cómo resolverlos. Para obtener información general, consulte Ejecución de un runbook en Azure Automation.
Ya no se pueden usar cmdlets de módulos no predeterminados importados en runbooks gráficos de PowerShell.
Problema
Cuando importe un módulo de PowerShell, no podrá usar sus cmdlets en runbooks gráficos de PowerShell.
Causa
Para mejorar la posición de seguridad de los runbooks de PowerShell, el servicio ha dejado de procesar el archivo de manifiesto del módulo para exportar los cmdlets y las funciones, lo que significa que no se pueden usar al crear runbooks gráficos de PowerShell.
Solución
La ejecución de runbooks existentes no resulta afectada. En el caso de los nuevos runbooks que usen módulos de PowerShell no predeterminados, para solucionar este problema se recomienda usar runbooks textuales, en lugar de runbooks gráficos de PowerShell. Puede usar la extensión de Azure Automation para VScode para crear y editar runbooks de PowerShell, ya que aprovecha GitHub Copilot para simplificar la experiencia de creación de runbook.
Se produce un error en Start-AzAutomationRunbook con el mensaje de error "runbookName no coincide con el patrón esperado"
Problema
Cuando se ejecuta Start-AzAutomationRunbook
para iniciar runbooks específicos:
start-azautomationRunbook -Name "Test_2" -AutomationAccountName "AutomationParent" -ResourceGroupName "AutomationAccount"
Se produce el siguiente error:
Start-AzAutomationRunbook: "runbookname" does not match expected pattern '^[a-zA-Z]*-*[a-zA-Z0-9]*$'
Causa
El código que se introdujo en la versión 1.9.0 del módulo Az.Automation comprueba los nombres de los runbooks para iniciar y marcar incorrectamente runbooks con varios caracteres "-" o con un carácter "_" en el nombre como no válido.
Solución alternativa
Se recomienda revertir a la versión 1.8.0 del módulo.
Solución
Actualmente, estamos trabajando para implementar una corrección para solucionar este problema.
Diagnóstico de problemas de runbooks
Si se producen errores durante la ejecución del runbook en Azure Automation, puede usar los pasos siguientes para ayudar a diagnosticar los problemas:
Asegúrese de que el script de runbook se ejecuta correctamente en la máquina local.
Para información sobre los módulos de referencia de lenguaje y aprendizaje, consulte la documentación de PowerShell o la documentación de Python. La ejecución local del script puede detectar y resolver errores comunes, como, por ejemplo:
- Módulos que faltan
- Errores de sintaxis
- Errores lógicos
Investigue los flujos de errores del runbook.
Examine estos flujos en busca de mensajes específicos y compárelos con los errores documentados en este artículo.
Asegúrese de que los nodos y el área de trabajo de Automation tengan los módulos necesarios.
Si el runbook importa algún módulo, compruebe que está disponible para la cuenta de Automation mediante los pasos indicados en Importación de módulos. Actualice los módulos de PowerShell a la versión más reciente siguiendo las instrucciones del artículo Actualización de módulos de Azure PowerShell en Azure Automation. Para más información sobre solución de problemas, consulte Solución de problemas de módulos.
Haga lo siguiente si el runbook se suspende o registra un error inesperado:
- Renueve el webhook si está intentando usar un webhook expirado para iniciar el runbook.
- Compruebe los estados de los trabajos para determinar los estados actuales del runbook y algunas posibles causas del problema.
- Agregue datos de salida adicionales al runbook para identificar lo que sucede antes de que se suspenda el runbook.
- Controle las excepciones producidas por su trabajo.
Realice este paso si el trabajo del runbook o el entorno de Hybrid Runbook Worker no responden.
Si ejecuta los runbooks en una instancia de Hybrid Runbook Worker en lugar de Azure Automation, puede que necesite solucionar los propios problemas de Hybrid Worker.
Escenario: No se puede crear ningún trabajo de Automation en la región Oeste de Europa
Problema
Al crear nuevos trabajos de Automation, es posible que se experimente un retraso o un error en la creación de trabajos. Los trabajos programados se retirarán automáticamente y los trabajos ejecutados a través del portal se pueden retirar si se detecta un error.
Causa
Esto se debe a la carga elevada de los runbooks de los clientes mediante el servicio Automation en la región Oeste de Europa.
Solución
Realice la siguiente acción si es factible según sus requisitos y su entorno para reducir el riesgo de error:
- Si usa una hora en punto para la creación del trabajo (las 12:00, 1:00, 2:00, etc.), normalmente en las horas en punto o medias horas, se recomienda mover la hora de inicio del trabajo a cinco minutos antes o después de las horas en punto o medias horas. Esto se debe a que la mayoría de los clientes usan el principio de la hora para la ejecución del trabajo, lo que aumenta drásticamente la carga en el servicio, mientras que la carga es relativamente baja en las otras franjas horarias.
Escenario: se produce un error en el runbook con el mensaje de error "this.Client.SubscriptionId no puede ser null".
Problema
El runbook con una identidad administrada Connect-AzAccount -Identity que intenta administrar objetos de Azure no funciona correctamente y registra el siguiente error: 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
Esto puede ocurrir cuando no se ha concedido ningún permiso a la identidad administrada (u otra cuenta usada en el runbook) para acceder a la suscripción.
Solución
Conceda a la identidad administrada (u otra cuenta usada en el runbook) una pertenencia a roles adecuada en la suscripción. Más información
Escenario: Acceso bloqueado a Azure Storage, Azure Key Vault o Azure SQL.
En este escenario se usa Azure Storage como ejemplo; pero la información es igualmente aplicable a Azure Key Vault y Azure SQL.
Problema
Al intentar acceder a Azure Storage desde un runbook, se produce un error similar al mensaje siguiente: 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
Azure Firewall está habilitado en Azure Storage.
Solución
La habilitación de Azure Firewall en Azure Storage, Azure Key Vault o Azure SQL bloquea el acceso desde runbooks de Azure Automation para esos servicios. El acceso se bloqueará incluso cuando la excepción de firewall para permitir servicios de Microsoft de confianza esté habilitada, ya que Automation no forma parte de la lista de servicios de confianza. Con un firewall habilitado, el acceso solo se puede realizar mediante una instancia de Hybrid Runbook Worker y un punto de conexión de servicio de red virtual.
Escenario: Se produce un error en el runbook del tipo Sin permisos o Prohibido (403).
Problema
Se produce un error en el runbook del tipo Sin permisos, Prohibido (403) o equivalente.
Causa
Es posible que las cuentas de ejecución no tengan los mismos permisos en los recursos de Azure que su cuenta de Automation actual.
Solución
Asegúrese de que su cuenta de ejecución tiene permisos para acceder a todos los recursos que se usan en el script.
Escenario: Error al iniciar sesión en la cuenta de Azure
Problema
Se produce uno de los siguientes errores al trabajar con el cmdlet Connect-AzAccount
:
Unknown_user_type: Unknown User Type
No certificate was found in the certificate store with thumbprint
Causa
Estos errores se producen si el nombre de recurso de credencial no es válido. También pueden producirse si el nombre de usuario y la contraseña que usó para configurar el recurso de credencial de Automation no son válidos.
Solución
Para determinar cuál es el problema, siga estos pasos:
Asegúrese de no haber incluido ningún carácter especial. Entre estos se incluye el carácter
\@
en el nombre del recurso de credencial de Automation que esté usando para conectarse a Azure.Compruebe que puede usar el nombre de usuario y la contraseña que están almacenados en la credencial de Azure Automation en su editor de ISE de PowerShell local. Ejecute los siguientes cmdlets en el ISE de PowerShell.
$Cred = Get-Credential #Using Azure Service Management Add-AzureAccount -Credential $Cred #Using Azure Resource Manager Connect-AzAccount -Credential $Cred
Si se produce un error en la autenticación localmente, puede deberse a que no haya configurado correctamente las credenciales de Microsoft Entra. Para configurar correctamente la cuenta de Microsoft Entra, consulte el artículo Autenticación en Azure mediante Microsoft Entra ID.
Si el error parece ser transitorio, intente agregar lógica de reintento a su rutina de autenticación para hacer de la autenticación un proceso más sólido.
$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 } }
Escenario: Ejecución de Login-AzureRMAccount para iniciar sesión
Problema
Recibe el error siguiente al ejecutar un runbook:
Run Login-AzureRMAccount to login.
Causa
Este error puede producirse cuando no usa una cuenta de ejecución o esta ha expirado.
Este error tiene dos causas principales:
- Hay versiones diferentes del módulo de AzureRM o Az.
- Intenta acceder a los recursos de otra suscripción.
Solución
Si recibe este error después de actualizar un módulo de AzureRM o Az, actualice todos los módulos a la misma versión.
Si intenta acceder a los recursos de otra suscripción, siga estos pasos para configurar los permisos:
Vaya a la cuenta de ejecución de Automation y copie los valores de Application ID (Id. de aplicación) y Thumbprint (Huella digital).
Vaya a la opción Access control (Control de acceso) de la suscripción donde la cuenta de Automation no está hospedada y agregue una asignación de roles nueva.
Agregue el valor de Application ID (Id. de aplicación) recopilado anteriormente. Seleccione los permisos de Contributor (Colaborador).
Copie el nombre de la suscripción.
Ahora puede usar el código del runbook siguiente para probar los permisos de la cuenta de Automation en la otra suscripción. Reemplace
<CertificateThumbprint>
por el valor que copió en el paso 1. Reemplace"<SubscriptionName>"
por el valor que copió en el paso 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 }
Escenario: No se encuentra la suscripción de Azure
Problema
Recibirá el siguiente error al trabajar con el cmdlet Select-AzureSubscription
, Select-AzureRMSubscription
o Select-AzSubscription
:
The subscription named <subscription name> cannot be found.
Error
Este error se puede generar si:
- El nombre de la suscripción no es válido.
- El usuario de Microsoft Entra que intenta obtener los detalles de la suscripción no está configurado como administrador de la suscripción.
- El cmdlet no está disponible.
- Se produjo un cambio de contexto.
Solución
Para el cambio de contexto, consulte Cambio de contexto en Azure Automation.
Escenario: se produce un error en los runbooks cuando se trabaja con varias suscripciones
Problema
Cuando se ejecuta un runbook, este no puede administrar los recursos de Azure.
Causa
El runbook no está utilizando el contexto correcto cuando se ejecuta. Esto puede deberse a que el runbook intenta tener acceso accidentalmente a la suscripción incorrecta.
Es posible que vea errores como este:
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/<subscriptionIdOfSubscriptionWhichDoesntContainTheVM>/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 como este:
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
Solución
Para evitar intentar acceder accidentalmente a la suscripción incorrecta, consulte Cambio de contexto en Azure Automation.
Escenario: Error de autenticación en Azure porque está habilitada la autenticación multifactor
Problema
Recibe el siguiente error al autenticarse en Azure con el nombre de usuario y la contraseña de Azure:
Add-AzureAccount: AADSTS50079: Strong authentication enrollment (proof-up) is required
Causa
Si dispone de autenticación multifactor en su cuenta de Azure, no puede usar un usuario de Microsoft Entra para autenticarse en Azure. En su lugar, tiene que usar un certificado o una entidad de servicio para autenticarse.
Solución
Para usar una entidad de servicio con los cmdlets de Azure Resource Manager, consulte Creación de una entidad de servicio mediante Azure Portal y Autenticación de una entidad de servicio con Azure Resource Manager.
Escenario: Se produce un error en un runbook con el mensaje "Se canceló una tarea"
Problema
El runbook genera un error similar al ejemplo siguiente:
Exception: A task was cancelled.
Causa
Este error puede deberse al uso de módulos de Azure obsoletos.
Solución
Puede solucionar este error con la actualización de los módulos de Azure a la versión más reciente:
- En la cuenta de Automation, seleccione Modules (Módulos) y, luego, elija Update Azure modules (Actualizar módulos de Azure).
- La actualización tarda aproximadamente 15 minutos. Una vez finalizada, vuelva a ejecutar el runbook en el que se produjo el error.
Para más información acerca de la actualización de los módulos, consulte Actualización de módulos de Azure en Azure Automation.
Escenario: Término no reconocido como nombre de un cmdlet, función o script
Problema
El runbook genera un error similar al ejemplo siguiente:
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
Este error puede deberse a los siguientes motivos:
- El módulo que contiene el cmdlet no está importado en la cuenta de Automation.
- El módulo que contiene el cmdlet está importado, pero no está actualizado.
Solución
Realice una de las siguientes tareas para solucionar este error:
- En el caso de un módulo de Azure, consulte Actualización de módulos de Azure PowerShell en Azure Automation para obtener información sobre cómo actualizar los módulos en su cuenta de Automation.
- En el caso de un módulo que no es de Azure, asegúrese de que el módulo se importa en su cuenta de Automation.
Escenario: Error del cmdlet en el runbook de PowerShell de PnP en Azure Automation
Problema
Cuando un runbook escribe un objeto PnP generado por PowerShell directamente en la salida de Azure Automation, la salida del cmdlet no puede volver a transmitirse a Automation.
Causa
Este problema normalmente se produce cuando Azure Automation procesa runbooks que invocan cmdlets de PowerShell de PnP; por ejemplo, add-pnplistitem
, sin detectar los objetos devueltos.
Solución
Edite los scripts para asignar los valores devueltos a variables de forma que los cmdlets no intenten escribir objetos completos en la salida estándar. Un script puede redirigir el flujo de salida a un cmdlet, como se muestra a continuación.
$null = add-pnplistitem
Si el script analiza la salida del cmdlet, el script debe almacenar la salida en una variable y manipular la variable en lugar de simplemente transmitir la salida.
$SomeVariable = add-pnplistitem ....
if ($SomeVariable.someproperty -eq ....
Escenario: No se reconoce el Cmdlet cuando se ejecuta un runbook
Problema
Se produce un error en el trabajo de runbook con el error:
<cmdlet name>: The term <cmdlet name> is not recognized as the name of a cmdlet, function, script file, or operable program.
Causa
Este error se produce cuando el motor de PowerShell no puede encontrar el cmdlet que está usando en su runbook. Es posible que el módulo que contiene el cmdlet no esté presente en la cuenta, que haya un conflicto de nombres con un nombre de runbook o que el cmdlet también exista en otro módulo y Automation no pueda resolver el nombre.
Solución
Use cualquiera de las siguientes soluciones para solucionar el problema:
- Asegúrese de que ha especificado correctamente el nombre del cmdlet.
- Asegúrese de que el cmdlet exista en su cuenta de Automation y de que no haya ningún conflicto. Para comprobar si está presente el cmdlet, abra un runbook en modo de edición y busque el cmdlet que quiere encontrar en la biblioteca o ejecute
Get-Command <CommandName>
. Una vez que haya validado que el cmdlet está disponible para la cuenta y que no hay conflictos de nombres con otros cmdlets o runbooks, agregue el cmdlet al lienzo. Asegúrese de que usa un conjunto válido de parámetros en el runbook. - Si tiene un conflicto de nombres y el cmdlet está disponible en dos módulos diferentes, use el nombre completo del cmdlet para resolver este problema. Por ejemplo, puede usar
ModuleName\CmdletName
. - Si está ejecutando el runbook en el entorno local de un grupo de Hybrid Worker, asegúrese de que el cmdlet o el módulo están instalados en la máquina que hospeda la instancia de Hybrid Worker.
Escenario: referencia de objeto incorrecta en la llamada a Add-AzAccount
Problema
Este error aparece cuando se trabaja con Add-AzAccount
, que es un alias del cmdlet Connect-AzAccount
:
Add-AzAccount : Object reference not set to an instance of an object
Causa
Este error puede producirse si el runbook no realiza los pasos adecuados antes de llamar a Add-AzAccount
para agregar la cuenta de Automation. Un ejemplo de uno de los pasos necesarios es iniciar sesión con una cuenta de ejecución. Para ver las operaciones correctas que se deben usar en el runbook, consulte Ejecución de un runbook en Azure Automation.
Escenario: Referencia a objeto no establecida como instancia de un objeto
Problema
Recibe el siguiente error cuando invoca un runbook secundario con el parámetro Wait
y el flujo de salida contiene un objeto:
Object reference not set to an instance of an object
Causa
Si el flujo contiene objetos, significa que Start-AzAutomationRunbook
no controla el flujo de salida correctamente.
Solución
Implemente una lógica de sondeo y use el cmdlet Get-AzAutomationJobOutput para recuperar la salida. Aquí se define un ejemplo de esta lógica:
$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
Escenario: error en runbook debido a un objeto deserializado
Problema
Se produce un error en el runbook con el error:
Cannot bind parameter <ParameterName>.
Cannot convert the <ParameterType> value of type Deserialized <ParameterType> to type <ParameterType>.
Causa
Si el runbook es un flujo de trabajo de PowerShell, almacena objetos complejos en un formato deserializado para conservar el estado del Runbook si se suspende el flujo de trabajo.
Solución
Use cualquiera de las siguientes soluciones para corregir este problema:
- Si canaliza objetos complejos de un cmdlet a otro, encapsule dichos cmdlets en una actividad
InlineScript
. - En lugar de pasar el objeto complejo entero, pase solamente el nombre o valor del mismo que necesite.
- Use un runbook de PowerShell en lugar de un runbook de flujo de trabajo de PowerShell.
Escenario: estado 400 Solicitud incorrecta al llamar a un webhook.
Problema
Cuando intenta invocar un webhook para un runbook de Azure Automation, recibe el siguiente error:
400 Bad Request : This webhook has expired or is disabled
Causa
El webhook al que intenta llamar está deshabilitado o ha expirado.
Solución
Si el webhook está deshabilitado, puede volver a habilitarlo mediante Azure Portal. Si el webhook expiró, debe eliminarlo y volver a crearlo. Solo puede renovar un webhook si aún no ha expirado.
Escenario: 429: Actualmente la tasa de solicitud es demasiado grande
Problema
Recibe el siguiente mensaje de error al ejecutar el cmdlet Get-AzAutomationJobOutput
:
429: The request rate is currently too large. Please try again
Causa
Este error puede producirse al recuperar la salida de trabajo de un runbook que tiene muchos flujos detallados.
Solución
Realice una de las siguientes acciones para solucionar este error:
- Edite el runbook y reduzca el número de flujos de trabajo que emite.
- Reduzca el número de flujos para recuperar cuando se ejecuta el cmdlet. Para ello, puede establecer el valor del parámetro
Stream
del cmdlet Get-AzAutomationJobOutput para que recupere solo los flujos de salida.
Escenario: error en el trabajo del runbook porque se superó la cuota asignada
Problema
Se produce un error en el trabajo de runbook con el error:
The quota for the monthly total job run time has been reached for this subscription
Causa
Este error se produce cuando la ejecución del trabajo supera la cuota gratuita de 500 minutos para su cuenta. Esta cuota se aplica a todos los tipos de tareas de ejecución de trabajos. Algunas de estas tareas son probar un trabajo, iniciar un trabajo desde el portal, ejecutar un trabajo mediante webhooks o programar un trabajo para que se ejecute mediante Azure Portal o el centro de datos. Para obtener más información sobre precios para, consulte Precios de Automation.
Solución
Si quiere usar más de 500 minutos de procesamiento por mes cambie la suscripción del nivel Gratis al nivel Básico:
- Inicie sesión en la suscripción de Azure.
- Seleccione la cuenta de Automation que quiera actualizar.
- Seleccione Settings (Configuración) y luego Pricing (Precio).
- Haga clic en Enable (Habilitar) en la parte inferior de la página para actualizar la cuenta al nivel Basic (Básico).
Escenario: flujo de salida de runbook superior a 1 MB
Problema
Se produce el siguiente error en el runbook que se ejecuta en el espacio aislado de Azure:
The runbook job failed due to a job stream being larger than 1MB, this is the limit supported by an Azure Automation sandbox.
Causa
Este error se produce porque el runbook intentó escribir demasiados datos de excepción en el flujo de salida.
Solución
Hay un límite de 1 MB en el flujo de salida del trabajo. Asegúrese de que el runbook incluye las llamadas a un archivo ejecutable o a un subproceso mediante bloques try
y catch
. Si las operaciones producen una excepción, haga que el código escriba el mensaje de la excepción en una variable de Automation. Esta técnica impedirá que el mensaje se escriba en el flujo de salida del trabajo. En el caso de trabajos ejecutados de Hybrid Runbook Worker, el flujo de salida truncado en 1 MB se muestra sin ningún mensaje de error.
Escenario: Se intentó iniciar el trabajo del runbook tres veces, pero en las tres se produjo un error
Problema
Se produce el siguiente error en el runbook:
The job was tried three times but it failed
Causa
Este error se produce debido a uno de los siguientes problemas:
Límite de memoria. Un trabajo puede producir un error si emplea más de 400 MB de memoria. Los límites documentados sobre la memoria que se asigna a un espacio aislado se encuentran en Límites del servicio Automation.
Sockets de red. Los espacios aislados de Azure están limitados a 1000 sockets de red simultáneos. Para más información, consulte Límites de servicio de Automation.
Módulo incompatible. Es posible que las dependencias del módulo no sean correctas. En este caso, el runbook suele devolver el mensaje
Command not found
oCannot bind parameter
.No se realizó ninguna autenticación con Active Directory de los espacios aislados. El runbook intentó llamar a un archivo ejecutable o a un subproceso que se ejecuta en un espacio aislado de Azure. No se admite la configuración de runbooks para autenticarse con Microsoft Entra ID mediante la Biblioteca de autenticación de Azure Active Directory (ADAL).
Solución
Límite de memoria, sockets de red. Algunas formas sugeridas para trabajar dentro del límite de memoria son dividir la carga de trabajo entre varios runbooks, procesar menos datos en la memoria, evitar escribir resultados innecesarios de los runbooks y considerar cuántos puntos de control se escriben en los runbooks de flujo de trabajo de PowerShell. Use el método clear, como
$myVar.clear
, para borrar las variables y utilice[GC]::Collect
para ejecutar inmediatamente la recolección de elementos no utilizados. Estas acciones reducen la superficie de memoria de su runbook en tiempo de ejecución.Módulo incompatible. Actualice los módulos de Azure siguiendo los pasos en Actualización de módulos de Azure PowerShell en Azure Automation.
No se realizó ninguna autenticación con Active Directory de los espacios aislados. Cuando realice la autenticación en Microsoft Entra ID con un runbook, asegúrese de que el módulo Azure AD esté disponible en su cuenta de automatización. Asegúrese de conceder a la cuenta de ejecución los permisos necesarios para realizar las tareas que el runbook automatiza.
Si el runbook no puede llamar a un archivo ejecutable o a un subproceso que se ejecuta en un espacio aislado de Azure, use el runbook en una instancia de Hybrid Runbook Worker. Los roles de Hybrid Worker no están limitados por los límites de memoria y de red como lo están los espacios aislados de Azure.
Escenario: Error en el trabajo de PowerShell con el mensaje de error "No se puede invocar el método"
Problema
Al iniciar un trabajo de PowerShell en un runbook que se ejecuta en Azure, recibe el siguiente mensaje de error:
Exception was thrown - Cannot invoke method. Method invocation is supported only on core types in this language mode.
Causa
Este error puede indicar que los runbooks que se ejecutan en un espacio aislado de Azure no se pueden ejecutar en el modo de lenguaje completo.
Solución
Hay dos maneras de resolver este error:
- En lugar de usar Start-Job, use Start-AzAutomationRunbook para iniciar el runbook.
- Intente ejecutar el runbook en una instancia de Hybrid Runbook Worker.
Para más información sobre este comportamiento y otros comportamientos de los runbooks de Azure Automation, consulte Ejecución de un runbook en Azure Automation.
Escenario: Un runbook de larga ejecución no se puede completar
Problema
El runbook muestra un estado Detenido después de ejecutarse durante tres horas. También se muestra este error:
The job was evicted and subsequently reached a Stopped state. The job cannot continue running.
Este comportamiento es así por naturaleza en los espacios aislados de Azure debido a la supervisión de distribución equilibrada de los procesos en Azure Automation. Si un proceso se ejecuta durante más de tres horas, la distribución equilibrada detiene automáticamente el runbook. El estado de un runbook que va más allá del límite de tiempo de distribución equilibrada varía según el tipo de runbook. Runbooks de PowerShell y Python se establecen en un estado Detenido. Los runbooks del flujo de trabajo de PowerShell se establecen en Error.
Causa
El runbook se ejecutó por encima del límite de tres horas permitido por la distribución equilibrada en un espacio aislado de Azure.
Solución
La solución recomendada consiste en ejecutar el runbook en un Hybrid Runbook Worker. Los roles Hybrid Worker no tienen el límite de tres horas de los runbooks de distribución equilibrada que tienen los espacios aislados de Azure. Los runbooks que se ejecutan en instancias de Hybrid Runbook Worker se deben desarrollar para admitir comportamientos de reinicio si existen problemas inesperados con la infraestructura local.
Otra solución consiste en optimizar el runbook mediante la creación de runbooks secundarios. Si el runbook recorre en bucle la misma función en varios recursos (por ejemplo, una operación de base de datos en varias bases de datos), la función se puede mover a un runbook secundario. Cada runbook secundario se ejecuta en paralelo en un proceso independiente. Este comportamiento reduce la cantidad total de tiempo que tarda en completarse el runbook primario.
Los cmdlets de PowerShell que habilitan el escenario de runbook secundario son:
- Start-AzAutomationRunbook. este cmdlet permite iniciar un runbook y pasar parámetros al mismo.
- Get-AzAutomationJob. Si hay operaciones que deben realizarse después de que se complete el runbook secundario, este cmdlet permite comprobar el estado del trabajo de cada elemento secundario.
Escenario: Error en los flujos de trabajos sobre el método get_SerializationSettings
Problema
Se muestra el siguiente error en sus flujos de trabajo para un runbook:
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
Este error probablemente se deba a una migración incompleta de los módulos AzureRM a los módulos Az en el runbook. Esta situación puede hacer que Azure Automation inicie un trabajo de runbook solo con los módulos de AzureRM y, luego, otro trabajo solo con los módulos Az, lo que lleva a un bloqueo del espacio aislado.
Solución
No se recomienda el uso de los cmdlets Az y AzureRM en el mismo runbook. Para obtener más información sobre el uso correcto de los módulos, consulte Migración a los módulos Az.
Escenario: Acceso denegado al usar el espacio aislado de Azure para un runbook o una aplicación
Problema
Cuando el runbook o la aplicación intentan ejecutarse en un espacio aislado de Azure, el entorno deniega el acceso.
Causa
Este problema puede producirse porque los espacios aislados de Azure impiden el acceso a todos los servidores COM fuera de proceso. Por ejemplo, una aplicación en espacio aislado o un runbook no pueden llamar a Instrumental de administración de Windows (WMI) o al servicio Windows Installer (msiserver.exe).
Solución
Para obtener detalles sobre el uso de espacios aislados de Azure, consulte Entorno de ejecución de un runbook.
Escenario: Código de estado no válido "Prohibido" al usar Key Vault dentro de un runbook
Problema
Al intentar acceder a Azure Key Vault mediante un runbook de Azure Automation, se produce el siguiente error:
Operation returned an invalid status code 'Forbidden'
Causa
Las posibles causas de este problema son:
- No usar una cuenta de ejecución.
- Permisos insuficientes.
Solución
No usar una cuenta de ejecución.
Siga el Paso 5: Agregar autenticación para administrar recursos de Azure para asegurarse de que usa una cuenta de ejecución para acceder a Key Vault.
Permisos insuficientes
Agregue permisos a Key Vault para asegurarse de que la cuenta de ejecución tenga suficientes permisos para acceder a Key Vault.
Escenario: Se produce el error "Se superó la longitud del parámetro" en el runbook
Problema
El runbook usa parámetros y presenta el siguiente error:
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
Hay un límite a la longitud total de caracteres de todos los parámetros que se pueden proporcionar en runbooks de Python 2.7, Python 3.8 y PowerShell 7.1. La longitud total de todos los nombres de parámetros y los valores de parámetros no deben superar los 30 000 caracteres.
Solución
Para solucionar este problema, puede usar variables de Azure Automation para pasar valores al runbook. Como alternativa, puede reducir el número de caracteres en los nombres de parámetros y valores de parámetros para asegurarse de que la longitud total no supere los 30 000 caracteres.
Documentos recomendados
Pasos siguientes
Si su problema no aparece o es incapaz de resolverlo, pruebe uno de los siguientes canales para obtener soporte técnico adicional:
- Obtenga respuestas de expertos de Azure en los foros de Azure.
- Póngase en contacto con @AzureSupport, la cuenta oficial de Microsoft Azure para mejorar la experiencia del cliente. El servicio de soporte técnico de Azure le pone en contacto con la comunidad de Azure donde encontrará respuestas, soporte técnico y expertos.
- Si necesita más ayuda, puede registrar un incidente de soporte técnico de Azure. Vaya al sitio de Soporte técnico de Azure y seleccione Obtener soporte técnico.