Compartilhar via


Solucionar problemas de runbook

Este artigo descreve problemas de runbook que podem ocorrer e como resolvê-los. Para obter informações gerais, consulte Execução de runbooks na Automação do Azure.

Não é mais possível usar cmdlets de módulos não padrão importados em runbooks gráficos do PowerShell

Problema

Ao importar um módulo do PowerShell, você não poderá usar seus cmdlets em runbooks gráficos do PowerShell.

Causa

Para melhorar a postura de segurança dos runbooks do PowerShell, o serviço não processa mais o arquivo de manifesto do módulo para exportar os cmdlets e as funções. Isso significa que eles não podem ser usados ao criar runbooks gráficos do PowerShell.

Resolução

Não há nenhum impacto na execução de runbooks existentes. Para novos runbooks que usam módulos não padrão do PowerShell, recomendamos usar runbooks textuais em vez de runbooks gráficos do PowerShell para superar esse problema. Você pode usar a extensão de Automação do Azure para VScode para criar e editar runbooks do PowerShell, que aproveita o GitHub Copilot para simplificar a experiência de criação de runbook.

Start-AzAutomationRunbook falha com a mensagem de erro "runbookName não corresponde ao padrão esperado"

Problema

Ao executar Start-AzAutomationRunbook para iniciar runbooks específicos:

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

Falha na execução com o seguinte erro:

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

Causa

O código introduzido na versão 1.9.0 do módulo Az.Automation verifica os nomes dos runbooks para iniciar e sinaliza incorretamente runbooks com vários caracteres "-" ou com um caractere "_" no nome como inválido.

Solução alternativa

Recomendamos que você reverta para a versão 1.8.0 do módulo.

Resolução

Atualmente, estamos trabalhando para implantar uma correção para resolver esse problema.

Diagnosticar problemas de runbook

Ao receber erros durante a execução do runbook na Automação do Azure, você pode usar as seguintes etapas para ajudar a diagnosticar os problemas:

  1. Verifique se o script de runbook é executado com êxito no computador local.

    Para obter referências de linguagem de programação e módulos de aprendizado, consulte a Documentação do PowerShell ou Documentação do Python. Executar o script localmente pode descobrir e resolver erros comuns, como:

    • Módulos ausentes
    • Erros de sintaxe
    • Erros de lógica
  2. Investigue osfluxos de erro de runbook.

    Examine se há mensagens específicas nestes fluxos e compare-as com os erros documentados neste artigo.

  3. Verifique se seus nós e o workspace da Automação têm os módulos necessários.

    Se o runbook importar módulos, verifique se eles estão disponíveis para sua conta de Automação usando as etapas em Importar módulos. Atualize seus módulos do PowerShell para a versão mais recente seguindo as instruções em Atualizar módulos do Azure PowerShell na Automação do Azure. Para obter mais informações sobre a solução de problemas, confira Solucionar problemas de módulos.

  4. Se o runbook for suspenso ou falhar inesperadamente:

  5. Execute esta etapa se o trabalho de runbook ou o ambiente em Hybrid Runbook Worker não responder.

    Se você estiver executando seus runbooks em um Hybrid Runbook Worker em vez de na Automação do Azure, talvez seja necessário solucionar problemas do próprio trabalhador híbrido.

Cenário: não é possível criar um novo trabalho de Automação na região Oeste da Europa

Problema

Ao criar novos trabalhos de Automação, você pode enfrentar um atraso ou uma falha. Os trabalhos agendados são desativados automaticamente e aqueles executados através do portal podem ser desativados em caso de falhas.

Causa

Isso ocorre devido à alta carga dos runbooks dos clientes que usam o serviço de Automação na região Oeste da Europa.

Resolução

Execute a ação a seguir, caso viável de acordo com seus requisitos e seu ambiente, para reduzir a probabilidade de falhas:

  • Quando você usa o início da hora para a criação do trabalho (às 12:00, 13:00, 14:00 e assim por diante.), normalmente na hora exata ou em metade da hora, a recomendação é mover o trabalho da hora de início para cinco minutos antes ou depois da hora exata/metade da hora. Isso ocorre porque a maioria dos clientes utiliza o início da hora para a execução de trabalhos, o que aumenta drasticamente a carga do serviço quando comparado a outros horários, em que a carga é relativamente baixa.

Cenário: ocorreu uma falha no runbook com a mensagem de erro "this.Client.SubscriptionId cannot be null".

Problema

Seu runbook que usa uma identidade gerenciada Connect-AzAccount -Identity, que tenta gerenciar os objetos do Azure, não funciona com sucesso e registra o seguinte erro: 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

Isso pode acontecer quando a Identidade Gerenciada (ou outra conta usada no runbook) não recebeu nenhuma permissão para acessar a assinatura.

Resolução

Conceda à Identidade Gerenciada (ou outra conta usada no runbook) uma associação de função apropriada na assinatura. Saiba mais

 Captura de tela que mostra atribuições de função do Azure.

Captura de tela que mostra como adicionar uma atribuição de função.

Cenário: acesso bloqueado ao Armazenamento do Azure ou ao Azure Key Vault ou ao SQL do Azure

Este cenário usa o Armazenamento do Microsoft Azure como um exemplo. No entanto, as informações são igualmente aplicáveis ao Azure Key Vault e ao SQL do Azure.

Problema

A tentativa de acessar o Armazenamento do Microsoft Azure de um runbook resulta em um erro semelhante à seguinte mensagem: 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

O Firewall do Azure no Armazenamento do Microsoft Azure está habilitado.

Resolução

Habilitar o Firewall do Azure no Armazenamento do Microsoft Azure, no Azure Key Vault ou no SQL do Azure bloqueia o acesso dos runbooks da Automação do Azure para esses serviços. O acesso será bloqueado mesmo quando a exceção de firewall para permitir que serviços Microsoft confiáveis estiver habilitada, pois a Automação não faz parte da lista de serviços confiáveis. Com um firewall habilitado, o acesso só pode ser feito usando um Hybrid Runbook Worker e um ponto de extremidade de serviço de rede virtual.

Cenário: falha no runbook com um erro Sem permissão ou Proibido 403

Problema

Falha no runbook com um erro Sem permissão ou Proibido 403 ou equivalente.

Causa

As contas Executar Como não podem ter as mesmas permissões da sua conta atual de Automação, em relação aos recursos do Azure.

Resolução

Verifique se a conta Executar Como tem permissões para acessar recursos usados no script.

Cenário: Falha ao entrar na conta do Azure

Problema

Você recebe um dos seguintes erros ao trabalhar com o cmdlet Connect-AzAccount:

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

Causa

Esses erros ocorrem se o ativo da credencial é inválido. Eles também podem ocorrer se o nome de usuário e a senha usados para configurar o ativo da credencial de Automação são inválidos.

Resolução

Para determinar o que está errado, siga estas etapas:

  1. Não use caracteres especiais. Esses caracteres incluem o caractere \@ no nome do ativo da credencial de Automação que você está usando para se conectar ao Azure.

  2. Verifique se você pode usar o nome de usuário e a senha que estão armazenados na credencial da Automação do Azure no editor do ISE do PowerShell local. Execute os seguintes cmdlets no ISE do PowerShell.

    $Cred = Get-Credential
    #Using Azure Service Management
    Add-AzureAccount -Credential $Cred
    #Using Azure Resource Manager
    Connect-AzAccount -Credential $Cred
    
  3. Se sua autenticação falhar localmente, você não configurou suas credenciais do Microsoft Entra corretamente. Para configurar a conta do Microsoft Entra corretamente, consulte o artigo Autenticar no Azure usando o Microsoft Entra ID.

  4. Se o erro parecer ser transitório, tente adicionar lógica de nova tentativa à sua rotina de autenticação para tornar a autenticação mais robusta.

    $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 
        }
    }
    

Cenário: Executar Login-AzureRMAccount para fazer logon

Problema

Você recebe o seguinte erro ao executar um runbook:

Run Login-AzureRMAccount to login.

Causa

Esse erro pode ocorrer quando você não está usando uma conta Executar Como ou quando a conta Executar Como expirou.

Esse erro tem duas causas principais:

  • Há versões diferentes do módulo AzureRM ou Az.
  • Você está tentando acessar recursos em uma assinatura separada.

Resolução

Se você receber esse erro depois de atualizar um módulo AzureRM ou AZ, atualize todos os seus módulos para a mesma versão.

Se você estiver tentando acessar recursos em outra assinatura, siga estas etapas para configurar permissões:

  1. Vá para a conta Executar Como de Automação e copie a ID do aplicativo e Impressão digital.

    Copiar a ID do Aplicativo e a Impressão digital

  2. Acesse o Controle de acesso da assinatura em que a conta da Automação do Azure não está hospedada e adicione uma nova atribuição de função.

    Controle de acesso

  3. Adicionar a ID do aplicativo coletada anteriormente. Selecionar permissões do Colaborador.

    Adicionar atribuição de função

  4. Copiar o nome da assinatura.

  5. Agora você pode usar o seguinte código de runbook para testar as permissões de sua conta de Automação para a outra assinatura. Substitua <CertificateThumbprint> pelo valor copiado na etapa 1. Substitua "<SubscriptionName>" pelo valor copiado na etapa 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
    }
    

Cenário: não é possível localizar a assinatura do Azure

Problema

Você recebe o seguinte erro ao trabalhar com os cmdlets Select-AzureSubscription, Select-AzureRMSubscription ou Select-AzSubscription:

The subscription named <subscription name> cannot be found.

Erro

Esse erro pode acontecer se:

  • O nome da assinatura não é válido.
  • O usuário do Microsoft Entra que está tentando obter os detalhes da assinatura não está configurado como um administrador da assinatura.
  • O cmdlet não está disponível.
  • A alternância de contexto ocorreu.

Resolução

Para a alternância de contexto, confira Alternância de contexto na Automação do Azure.

Cenário: os runbooks falham ao lidar com várias assinaturas

Problema

Ao executar runbooks, o runbook falha ao gerenciar recursos do Azure.

Causa

O runbook não está usando o contexto correto durante a execução. Isso pode ser devido ao runbook tentar acessar acidentalmente a assinatura incorreta.

Você poderá ver erros 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... +

ou 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

Resolução

Para evitar a tentativa de acessar acidentalmente a assinatura incorreta, confira Alternância de contexto na Automação do Azure.

Cenário: A Autenticação do Azure falhou porque a autenticação multifator está habilitada

Problema

Você recebe o seguinte erro ao autenticar no Azure com seu nome de usuário e senha do Azure:

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

Causa

Se você tiver a autenticação multifator em sua conta do Azure, você não pode usar um usuário do Microsoft Entra para autenticar no Azure. Em vez disso, você precisa usar um certificado ou uma entidade de serviço para se autenticar.

Resolução

Para usar uma entidade de serviço com os cmdlets do Azure Resource Manager, veja Criando entidade de serviço usando o portal do Azure e Autenticando uma entidade de serviço com o Azure Resource Manager.

Cenário: O runbook falha com a mensagem de erro "Uma tarefa foi cancelada"

Problema

Seu runbook falha com um erro semelhante ao exemplo a seguir:

Exception: A task was cancelled.

Causa

Esse erro pode ser causado por meio de módulos do Azure desatualizados.

Resolução

Esse erro pode ser resolvido atualizando os módulos do Azure para a versão mais recente:

  1. Na sua conta de Automação, selecione Módulose depois Atualizar módulos do Azure.
  2. A atualização leva aproximadamente 15 minutos. Após a conclusão, execute novamente o runbook que falhou.

Para saber mais sobre como atualizar seus módulos, confira Atualizar módulos do Azure na Automação do Azure.

Cenário: Termo não reconhecido como o nome de um cmdlet, uma função ou um script

Problema

Seu runbook falha com um erro semelhante ao exemplo a seguir:

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

Esse erro pode ocorrer pelos seguintes motivos:

  • O módulo que contém o cmdlet não é importado para a conta de Automação.
  • O módulo que contém o cmdlet é importado, mas está desatualizado.

Resolução

Execute uma das seguintes tarefas para resolver esse erro:

Cenário: Falha do cmdlet no runbook do PnP PowerShell na Automação do Azure

Problema

Quando um runbook grava um objeto gerado por PnP PowerShell na saída de Automação do Azure diretamente, a saída do cmdlet não pode transmitir de volta para a Automação.

Causa

Esse problema geralmente ocorre quando a Automação do Azure processa runbooks que invocam cmdlets do PnP PowerShell, por exemplo, add-pnplistitem, sem capturar os objetos de retorno.

Resolução

Edite seus scripts para atribuir quaisquer valores de retorno às variáveis para que os cmdlets não tentem gravar objetos inteiros na saída padrão. Um script pode redirecionar o fluxo de saída para um cmdlet, como mostrado aqui.

  $null = add-pnplistitem

Se o script analisar a saída do cmdlet, o script precisa armazenar a saída em uma variável e manipular a variável em vez de simplesmente transmitir a saída.

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

Cenário: cmdlet não reconhecido ao se executar um runbook

Problema

O trabalho de runbook falha com o erro:

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

Causa

Esse erro é causado quando o mecanismo do PowerShell não consegue encontrar o cmdlet que você está usando no seu runbook. É possível que o módulo que contém o cmdlet está ausente da conta, que há um conflito de nome com um nome de runbook ou que o cmdlet também existe em outro módulo e a Automação não pode resolver o nome.

Resolução

Use qualquer uma das seguintes soluções para corrigir o problema:

  • Verifique se você inseriu o nome do cmdlet corretamente.
  • Verifique se o cmdlet existe em sua conta de Automação e se não há conflitos. Para verificar se o cmdlet está presente, abra um runbook no modo de edição e a pesquise o cmdlet que você deseja localizar na biblioteca, ou execute Get-Command <CommandName>. Depois de validar que o cmdlet está disponível para a conta e que não há conflitos de nome com outros cmdlets ou runbooks, adicione o cmdlet à tela. Verifique se você está usando um conjunto de parâmetros válido em seu runbook.
  • Se houver um conflito de nomes e o cmdlet estiver disponível em dois módulos diferentes, resolva o problema usando o nome totalmente qualificado do cmdlet. Por exemplo, você pode usar ModuleName\CmdletName.
  • Se você estiver executando o runbook localmente em um grupo de trabalhadores híbridos, verifique se o módulo e cmdlet estão instalados no computador que hospeda o trabalhador híbrido.

Cenário: referência de objeto incorreta na chamada para Add-AzAccount

Problema

Você recebe esse erro quando trabalha com Add-AzAccount, que é um alias para o cmdlet Connect-AzAccount:

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

Causa

Esse erro pode ocorrer se o runbook não executar as etapas adequadas antes de chamar Add-AzAccount para adicionar a conta de Automação. Um exemplo de uma das etapas necessárias é entrar com uma conta Executar Como. Para as operações corretas a serem usadas em seu runbook, consulte Execução de runbook na Automação do Azure.

Cenário: Referência de objeto não definida para uma instância de objeto

Problema

Você recebe o seguinte erro ao chamar um runbook filho com o parâmetro Wait, e o Fluxo de saída contém um objeto:

Object reference not set to an instance of an object

Causa

Se o fluxo contiver objetos, Start-AzAutomationRunbook não tratará o Fluxo de saída corretamente.

Resolução

Implemente uma lógica de sondagem e use o cmdlet Get-AzAutomationJobOutput para recuperar a saída. Um exemplo dessa lógica é definido aqui:

$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

Cenário: O Runbook falha devido a objeto desserializado

Problema

O runbook falhar com o erro:

Cannot bind parameter <ParameterName>.

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

Causa

Se o seu runbook for um Fluxo de Trabalho do PowerShell, ele armazenará objetos complexos em um formato desserializado para manter seu estado de runbook se o fluxo de trabalho estiver suspenso.

Resolução

Use qualquer uma das seguintes soluções para corrigir esse problema:

  • Se você estiver direcionando objetos complexos de um cmdlet para outro, encapsule os cmdlets em uma atividade InlineScript.
  • Passe o nome ou o valor necessário do objeto complexo em vez de passar o objeto inteiro.
  • Use um runbook do PowerShell em vez de um runbook de Fluxo de Trabalho do PowerShell.

Cenário: status 400 Solicitação Inválida ao chamar um webhook

Problema

Ao tentar chamar um webhook para um runbook de Automação do Azure, você recebe o seguinte erro:

400 Bad Request : This webhook has expired or is disabled

Causa

O webhook que você está tentando chamar está desabilitado ou expirou.

Resolução

Se o webhook estiver desabilitado, você pode habilitá-lo novamente por meio do portal do Azure. Se o webhook tiver expirado, você deverá excluí-lo e recriá-lo. Só é possível renovar um webhook se ele ainda não expirou.

Cenário: 429: A taxa de solicitação no momento é muito grande

Problema

Você receberá a seguinte mensagem de erro ao executar o cmdlet Get-AzAutomationJobOutput:

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

Causa

Esse erro pode ocorrer ao recuperar a saída do trabalho de um runbook que tenha muitos fluxos detalhados.

Resolução

Para resolver esse erro, execute um destes procedimentos:

  • Edite o runbook e reduza o número de fluxos de trabalho que ele emite.
  • Reduza o número de fluxos a ser recuperado ao executar o cmdlet. Para fazer isso, você pode definir o valor do parâmetro Stream para o cmdlet Get-AzAutomationJobOutput para recuperar somente os Fluxos de saída. ​

Cenário: o trabalho de runbook falhou porque excedeu a cota alocada

Problema

O trabalho de runbook falha com o erro:

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

Causa

Esse erro ocorre quando a execução do trabalho excede a cota de livre de 500 minutos para sua conta. Essa cota aplica-se a todos os tipos de tarefa de execução de trabalho. Algumas dessas tarefas estão testando um trabalho, iniciando um trabalho no portal, executando um trabalho usando webhooks ou agendando um trabalho para execução usando o portal do Azure ou seu datacenter. Para saber mais sobre os preços para Automação, confira os Preços de automação.

Resolução

Se quiser usar mais de 500 minutos de processamento por mês, altere sua assinatura da Camada gratuita para a camada Básica:

  1. Entre em sua assinatura do Azure.
  2. Selecione a conta de Automação a ser atualizada.
  3. Selecione Configurações e, em seguida, selecione Preço.
  4. Clique em Habilitar na parte inferior da página para atualizar sua conta para a camada Básica.

Cenário: fluxo de saída do runbook maior que 1 MB

Problema

O runbook em execução na área restrita do Azure falha com o seguinte erro:

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 erro ocorre porque o runbook tenta gravar muitos dados de exceção no fluxo de saída.

Resolução

Há um limite de 1 MB no fluxo de saída do trabalho. Verifique se seu runbook inclui chamadas para um executável ou subprocesso usando blocos try e catch. Se as operações lançarem uma exceção, faça com que o código grave a mensagem da exceção em uma variável de Automação. Essa técnica impede que a mensagem seja gravada no fluxo de saída do trabalho. Para Hybrid Runbook Worker trabalhos executados, o fluxo de saída truncado em 1 MB é exibido sem nenhuma mensagem de erro.

Cenário: O início do trabalho de runbook foi tentado três vezes, mas todas as vezes o início falhou

Problema

Seu runbook falha com o seguinte erro:

The job was tried three times but it failed

Causa

Esse erro ocorre devido a um dos seguintes problemas:

  • Limite de memória. Um trabalho pode falhar se estiver usando mais de 400 MB de memória. Os limites documentados sobre a memória alocada em uma área restrita são encontrados em Limites do serviço de automação.

  • Soquetes de rede. As áreas restritas do Azure são limitadas a 1.000 soquetes de rede simultâneos. Para saber mais, confira Limites do serviço de Automação.

  • Módulo incompatível. As dependências de módulo podem não estar corretas. Nesse caso, o runbook normalmente retorna uma mensagem Command not found ou Cannot bind parameter.

  • Sem autenticação com o Active Directory para área restrita. Seu runbook tentou chamar um executável ou subprocesso que é executado em uma área restrita do Azure. Não há suporte para a configuração de runbooks para autenticar com o Microsoft Entra ID usando a ADAL (Biblioteca de Autenticação do Azure Active Directory).

Resolução

  • Limite de memória, soquetes de rede. Métodos sugeridos de trabalhar nos limites de memória são dividir a carga de trabalho entre vários runbooks, processar menos dados na memória, evitar a gravação de saída desnecessária de seus runbooks e considerar quantos pontos de verificação são gravados em seus runbooks de fluxo de trabalho do PowerShell. Use o método de limpeza, como $myVar.clear, para limpar variáveis e use [GC]::Collect para executar a coleta de lixo imediatamente. Essas ações reduzem o volume de memória do seu runbook durante o runtime.

  • Módulo incompatível. Atualize os módulos do Azure seguindo as etapas em Como atualizar os módulos do Azure PowerShell na Automação do Azure.

  • Sem autenticação com o Active Directory para área restrita. Ao autenticar no Microsoft Entra ID com um runbook, verifique se o módulo do Azure Active Directory está disponível na sua conta de Automação. Certifique-se de conceder à conta Executar Como as permissões necessárias para executar as tarefas que o runbook automatiza.

    Se o runbook não puder chamar um executável ou subprocesso em execução em uma área restrita do Azure, use o runbook em um Hybrid Runbook Worker. Trabalhadores híbridos não têm os limites de memória e rede que as áreas restritas do Azure têm.

Cenário: o trabalho do PowerShell falha com a mensagem de erro "Não é possível invocar o método"

Problema

Você recebe a seguinte mensagem de erro ao iniciar um trabalho do PowerShell em um runbook que é executado no Azure:

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

Causa

Esse erro pode indicar que os runbooks executados em uma área restrita do Azure não podem ser executados no Modo de Linguagem Completa.

Resolução

Há três maneiras de resolver esse erro:

Para saber mais sobre esse comportamento e outros comportamentos dos runbooks de Automação do Azure, confira Execução de runbook na Automação do Azure.

Cenário: Falha de conclusão de um runbook de execução longa

Problema

Seu runbook é exibido em um estado Parado após a execução de 3 horas. Você também pode ver este erro:

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

Esse comportamento existe, por natureza, nas áreas restritas do Azure devido ao monitoramento de compartilhamento justo dos processos na Automação do Azure. Se um processo for executado por mais de três horas, o compartilhamento justo interrompe automaticamente um runbook. O status de um runbook que ultrapassa o limite de tempo de compartilhamento justo difere por tipo de runbook. Os runbooks do PowerShell e do Python são definidos com um status Parado. Os runbooks do Fluxo de trabalho do PowerShell estão definidos como Falha.

Causa

O runbook ultrapassou o limite de três horas permitido pelo compartilhamento justo em uma área restrita do Azure.

Resolução

Uma solução recomendada é executar o runbook em um Hybrid Runbook Worker. Os trabalhadores híbridos não têm limite de runbook de compartilhamento justo de três horas que as áreas restritas do Azure têm. Os runbooks executados em Hybrid Runbook Workers devem ser desenvolvidos para dar suporte a comportamentos de reinicialização, caso haja problemas de infraestrutura local inesperados.

Outra opção é otimizar o runbook criando runbooks filhos. Se o seu runbook faz loop da mesma função em vários recursos, por exemplo, uma operação de banco de dados em vários bancos de dados, é possível mover essa função para um runbook filho. Cada um desses runbooks filhos é executado em paralelo em processos separados. Esse comportamento reduz a quantidade total de tempo para o runbook pai concluir.

Os cmdlets do PowerShell que habilitam o cenário do runbook filho são:

  • Start-AzAutomationRunbook. Esse cmdlet permite que você inicie um runbook e passe parâmetros para o runbook.
  • Get-AzAutomationJob. Se há operações que precisam ser executadas após a conclusão do runbook filho, este cmdlet permite verificar o status de trabalho para cada filho.

Cenário: Erro em fluxos de trabalho sobre o método get_SerializationSettings

Problema

Você verá o seguinte erro em seus fluxos de trabalho para um 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

Esse erro é provavelmente causado pelo uso de uma migração incompleta do AzureRM para módulos AZ em seu runbook. Essa situação pode fazer com que a Automação do Azure inicie um trabalho de runbook usando apenas módulos AzureRM e, em seguida, inicie outro trabalho usando apenas módulos Az, o que leva a uma falha de área restrita.

Resolução

Não recomendamos o uso de cmdlets Az e AzureRM no mesmo runbook. Para saber mais sobre o uso correto dos módulos, consulte Migrar para módulos Az.

Cenário: acesso negado ao usar a área restrita do Azure para runbook ou aplicativo

Problema

Quando o runbook ou aplicativo tenta ser executado em uma área restrita do Azure, o ambiente nega acesso.

Causa

Esse problema pode ocorrer porque as áreas restritas do Azure impedem o acesso a todos os servidores COM fora do processo. Por exemplo, um aplicativo ou runbook em área restrita não pode fazer chamada em Instrumentação de Gerenciamento do Windows (WMI) ou no serviço Windows Installer (msiserver.exe).

Resolução

Para obter detalhes sobre o uso de áreas restritas do Azure, consulte Ambiente de execução de runbook.

Cenário: código de status Proibido Inválido ao usar Key Vault dentro de um runbook

Problema

Ao tentar acessar Azure Key Vault por meio de um runbook de Automação do Azure, você obtém o seguinte erro:

Operation returned an invalid status code 'Forbidden'

Causa

As possíveis causas desse problema são:

  • Não está usando uma conta Executar Como.
  • Permissões insuficientes

Resolução

Não usar uma conta Executar Como

Siga Etapa 5 – Adicionar autenticação para gerenciar recursos do Azure para garantir que você esteja usando uma conta Executar Como para acessar Key Vault.

Permissões insuficientes

Adicione permissões ao Key Vault para garantir que sua conta Executar Como tenha permissões suficientes para acessar Key Vault.

Cenário: o runbook falha com o erro “Comprimento do parâmetro excedido”

Problema

Seu runbook usa os parâmetros e falha com o seguinte erro:

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

Há um limite para o comprimento total de caracteres de todos os Parâmetros que podem ser fornecidos em runbooks do Python 2.7, Python 3.8 e PowerShell 7.1. O comprimento total de todos os Nomes de parâmetro e os Valores de parâmetro não devem exceder 30.000 caracteres.

Resolução

Para superar esse problema, você pode usar as Variáveis de Automação do Azure para passar os valores para o runbook. Como alternativa, você pode reduzir o número de caracteres em Nomes de parâmetro e Valores de parâmetro para garantir que o comprimento total não exceda 30.000 caracteres.

Próximas etapas

Se você não encontrar seu problema aqui ou não conseguir resolvê-lo, visite um dos seguintes canais para obter mais suporte:

  • Obtenha respostas de especialistas do Azure nos Fóruns do Azure.
  • Conecte-se ao @AzureSupport, a conta oficial do Microsoft Azure para melhorar a experiência do cliente. O Suporte do Azure conecta você com a comunidade do Azure para obter as respostas, suporte e falar com os especialistas.
  • Se precisar de mais ajuda, você pode registrar um incidente de suporte do Azure. Acesse o site de suporte do Azure e selecione Obter suporte.