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.

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:

  1. 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
  2. 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.

  3. 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.

  4. Haga lo siguiente si el runbook se suspende o registra un error inesperado:

  5. 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

 Screenshot that shows the assigning of Azure Role assignments.

Screenshot that shows how to add role assignment.

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:

  1. 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.

  2. 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
    
  3. 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.

  4. 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:

  1. Vaya a la cuenta de ejecución de Automation y copie los valores de Application ID (Id. de aplicación) y Thumbprint (Huella digital).

    Copy Application ID and Thumbprint

  2. 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.

    Access control

  3. Agregue el valor de Application ID (Id. de aplicación) recopilado anteriormente. Seleccione los permisos de Contributor (Colaborador).

    Add role assignment

  4. Copie el nombre de la suscripción.

  5. 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/<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 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:

  1. En la cuenta de Automation, seleccione Modules (Módulos) y, luego, elija Update Azure modules (Actualizar módulos de Azure).
  2. 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:

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:

  1. Inicie sesión en la suscripción de Azure.
  2. Seleccione la cuenta de Automation que quiera actualizar.
  3. Seleccione Settings (Configuración) y luego Pricing (Precio).
  4. 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 o Cannot 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:

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.

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.