Resolver problemas de runbooks

Este artigo descreve problemas de runbook que podem ocorrer e como resolvê-los. Para obter informações gerais, consulte Execução de runbook 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.

Motivo

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 funções. Isso significa que eles não podem ser usados ao criar runbooks gráficos do PowerShell.

Resolução

Não há impacto na execução dos runbooks existentes. Para novos runbooks usando módulos não padrão do PowerShell, recomendamos o uso de 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 Copilot do GitHub para simplificar a experiência de criação de runbooks.

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

Problema

Quando você executa Start-AzAutomationRunbook para iniciar runbooks específicos:

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

Ele falha com o seguinte erro:

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

Motivo

Código que foi 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

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 runbooks

Quando receber erros durante a execução do runbook na Automatização do Azure, pode utilizar os seguintes passos para ajudar a diagnosticar os problemas:

  1. Confirme que o script do runbook é executado com êxito no computador local.

    Para obter os módulos de referência e aprendizagem de linguagem, veja a Documentação do PowerShell ou a Documentação do Python. Executar o script localmente pode detetar e resolver erros comuns, tais como:

    • Módulos em falta
    • Erros de sintaxe
    • Erros de lógica
  2. Investigue os fluxos de erros do runbook.

    Observe estes fluxos para obter mensagens específicas e compare-os com os erros documentados neste artigo.

  3. Confirme que os nós e a área de trabalho de Automatização têm os módulos necessários.

    Se o runbook importar módulos, verifique se estão disponíveis na conta de Automatização ao utilizar os passos em Importar módulos. Atualize os módulos do PowerShell para a versão mais recente ao seguir as instruções em Atualizar os módulos do Azure PowerShell na Automatização do Azure. Para obter mais informações sobre a resolução de problemas, veja Resolver problemas dos módulos.

  4. Se o runbook ficar suspenso ou falhar inesperadamente:

  5. Realize este passo se o trabalho de runbook ou o ambiente na Função de Trabalho de Runbook Híbrida não responder.

    Se estiver a executar runbooks com uma Função de Trabalho de Runbook Híbrida e não com a Automatização do Azure, poderá ter de resolver o problema na própria função de trabalho híbrida.

Cenário: Não é possível criar um novo trabalho de automação na região da Europa Ocidental

Problema

Ao criar novos trabalhos de Automatização, poderá ocorrer um atraso ou uma falha na criação do trabalho. Os trabalhos agendados serão automaticamente retirados e os trabalhos executados através do portal podem ser retirados se vir uma falha.

Motivo

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

Resolução

Execute a seguinte ação, se for viável, de acordo com sua necessidade e ambiente, para reduzir a chance de falha:

  • Se você estiver usando o topo da hora para a criação de trabalho (às 12:00, 1:00, 2:00 e assim por diante.), normalmente na hora, ou meia hora, recomendamos que você mova a hora de início do trabalho para cinco minutos antes ou depois da hora/meia hora. Isso ocorre porque a maioria dos clientes usa o início da hora para a execução do trabalho, o que aumenta drasticamente a carga no serviço, enquanto a carga é relativamente baixa nos outros intervalos de tempo.

Cenário: Runbook falha com "isto. Client.SubscriptionId não pode ser null." mensagem de erro

Problema

Seu runbook usando uma identidade gerenciada Connect-AzAccount -Identity que tenta gerenciar objetos do Azure, não funciona com êxito 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

Motivo

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 Gerida (ou a outra conta utilizada no runbook) uma associação de função adequada na subscrição. Mais informações

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

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

Cenário: Acesso bloqueado ao Armazenamento do Microsoft Azure, ao Azure Key Vault ou ao SQL do Azure

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

Problema

A tentativa de acessar o Armazenamento do Azure a partir 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.

Motivo

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

Resolução

Habilitar o Firewall do Azure no Armazenamento do Azure, o Cofre da Chave do Azure ou o 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 serviços Microsoft fidedignos estiver ativada, uma vez que a Automatização não faz parte da lista de serviços fidedignos. Com um firewall habilitado, o acesso só pode ser feito usando um Runbook Worker híbrido e um ponto de extremidade de serviço de rede virtual.

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

Problema

Seu runbook falha com um erro Sem permissão ou Proibido 403, ou equivalente.

Motivo

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

Resolução

Certifique-se de que sua conta Run As tenha permissões para acessar quaisquer recursos usados em seu script.

Cenário: Falha ao iniciar sessão na conta do Azure

Problema

Você recebe um dos seguintes erros quando trabalha com o Connect-AzAccount cmdlet:

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

Motivo

Estes erros ocorrem se o nome do recurso de credencial não for válido. Também podem ocorrer se o nome de utilizador e a palavra-passe que utilizou para configurar o recurso de credencial da Automatização não forem válidos.

Resolução

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

  1. Certifique-se de que não tem carateres especiais. Estes carateres incluem o caráter \@ no nome do recurso de credencial da Automatização que está a utilizar para ligar ao Azure.

  2. Verifique se pode utilizar o nome de utilizador e a palavra-passe que estão armazenados na credencial da Automatizaçã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 a autenticação falhar localmente, é porque não configurou corretamente as suas credenciais do Microsoft Entra. Para configurar a conta do Microsoft Entra corretamente, consulte o artigo Autenticar no Azure com o Microsoft Entra ID.

  4. Se o erro aparentar ser transitório, tente adicionar lógica de repetição à 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 iniciar sessão

Problema

Recebe o seguinte erro ao executar um runbook:

Run Login-AzureRMAccount to login.

Motivo

Este erro pode ocorrer quando não está a utilizar uma conta Run As ou a conta Run As expirou.

O erro tem duas causas principais:

  • Existem versões diferentes do módulo AzureRM ou Az.
  • Está a tentar aceder aos recursos numa subscrição separada.

Resolução

Se receber este erro depois de atualizar um módulo do AzureRM ou do Az, atualize todos os 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 Run As de automação e copie a ID do aplicativo e a impressão digital.

    Copiar ID do aplicativo e impressão digital

  2. Vá para o controle de acesso da assinatura onde a conta de automação não está hospedada e adicione uma nova atribuição de função.

    Controlo de acesso

  3. Adicione a ID do aplicativo coletada anteriormente. Selecione Permissões de Colaborador .

    Adicionar atribuição de função

  4. Copie o nome da assinatura.

  5. Agora você pode usar o seguinte código de runbook para testar as permissões da 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 subscrição do Azure

Problema

Você recebe o seguinte erro quando trabalha com o Select-AzureSubscriptionSelect-AzureRMSubscription, ou Select-AzSubscription cmdlet:

The subscription named <subscription name> cannot be found.

Erro

Este erro pode ocorrer se:

  • O nome da subscrição não é válido.
  • O usuário do Microsoft Entra que está tentando obter os detalhes da assinatura não está configurado como administrador da assinatura.
  • O cmdlet não está disponível.
  • Ocorreu uma mudança de contexto.

Resolução

Para alternar contexto, consulte Comutação de contexto na Automação do Azure.

Cenário: Os runbooks falham ao lidar com várias subscrições

Problema

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

Motivo

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

Você pode 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 tentar acessar acidentalmente a assinatura incorreta, consulte Alternância de contexto na Automação do Azure.

Cenário: a autenticação no Azure falha porque a autenticação multifator está ativada

Problema

Recebe o seguinte erro ao autenticar no Azure com o nome de utilizador e a palavra-passe do Azure:

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

Motivo

Se você tiver autenticação multifator em sua conta do Azure, não poderá usar um usuário do Microsoft Entra para se autenticar no Azure. Em vez disso, terá de utilizar um certificado ou um principal de serviço para autenticar.

Resolução

Para usar uma entidade de serviço com cmdlets do Azure Resource Manager, consulte 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

O runbook falha com um erro semelhante ao seguinte exemplo:

Exception: A task was cancelled.

Motivo

Esse erro pode ser causado pelo uso de módulos desatualizados do Azure.

Resolução

Você pode resolver esse erro atualizando seus módulos do Azure para a versão mais recente:

  1. Na sua conta de Automatização, selecione Módulos e, em seguida, Atualizar módulos do Azure.
  2. A atualização demora aproximadamente 15 minutos. Depois de terminar, execute novamente o runbook que falhou.

Para saber mais sobre a atualização dos módulos, consulte Atualizar módulos do Azure na Automatização do Azure.

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

Problema

O runbook falha com um erro semelhante ao seguinte exemplo:

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.

Motivo

Este erro pode acontecer pelos seguintes motivos:

  • O módulo que contém o cmdlet não é importado para a conta de Automatizaçã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: Cmdlet falha no runbook do PnP PowerShell na Automação do Azure

Problema

Quando um runbook escreve um objeto PnP gerado pelo PowerShell diretamente na saída da Automatização do Azure, a saída do cmdlet não pode ser transmitida de volta para a Automatização.

Motivo

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

Resolução

Edite seus scripts para atribuir quaisquer valores de retorno a 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, conforme mostrado aqui.

  $null = add-pnplistitem

Se o script analisar a saída do cmdlet, o script deverá armazenar a saída numa variável e manipulá-la em vez de simplesmente transmitir a saída.

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

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

Problema

A sua tarefa do runbook falhou com o erro:

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

Motivo

Esse erro é causado quando o mecanismo do PowerShell não consegue encontrar o cmdlet que você está usando em seu runbook. É possível que o módulo que contém o cmdlet esteja em falta na conta, que exista um conflito de nome com um nome de runbook ou o que cmdlet também exista noutro módulo e a Automatização não consiga resolver o nome.

Resolução

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

  • Certifique-se de que introduziu o nome do cmdlet corretamente.
  • Certifique-se de que o cmdlet existe na sua conta de Automatização e que não existem conflitos. Para verificar se o cmdlet está presente, abra um runbook no modo de edição e procure o cmdlet que deseja encontrar na biblioteca ou execute Get-Command <CommandName>. Depois de validar que o cmdlet está disponível para a conta e que não existem conflitos de nomes com outros cmdlets ou runbooks, adicione o cmdlet à tela. Certifique-se de que está a utilizar um conjunto de parâmetros válido no runbook.
  • Se tiver um conflito de nomes e o cmdlet estiver disponível em dois módulos diferentes, resolva o problema com o nome completamente qualificado do cmdlet. Por exemplo, pode utilizar ModuleName\CmdletName.
  • Se estiver a executar o runbook no local num grupo de trabalho híbrido, certifique-se de que o módulo e o cmdlet estão instalados no computador que aloja a função de trabalho híbrida.

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

Problema

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

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

Motivo

Este erro pode ocorrer se o runbook não fizer 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 Run As. Para obter 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 um objeto

Problema

Você recebe o seguinte erro quando invoca um runbook filho com o Wait parâmetro e o fluxo de saída contém um objeto:

Object reference not set to an instance of an object

Motivo

Se o fluxo contiver objetos, Start-AzAutomationRunbook não manipulará 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: Runbook falha devido a objeto desserializado

Problema

Seu runbook falha com o erro:

Cannot bind parameter <ParameterName>.

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

Motivo

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

Resolução

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

  • Se estiver a encaminhar objetos complexos de um cmdlet para outro, encapsule num wrapper estes cmdlets numa atividade InlineScript.
  • Transmita o nome ou valor de que precisa a partir do objeto complexo em vez de transmitir o objeto inteiro.
  • Utilize um runbook do PowerShell em vez de um runbook de Fluxo de Trabalho do PowerShell.

Cenário: Estado de Pedido Incorreto 400 ao chamar um webhook

Problema

Quando você tenta invocar 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

Motivo

O webhook que está a tentar acionar está desativado ou expirou.

Resolução

se o webhook estiver desativado, poderá reativá-lo no portal do Azure. Se o webhook tiver expirado, terá de o eliminar e, em seguida, voltar a criar. Só poderá renovar um webhook se este ainda não tiver expirado.

Cenário: 429: A taxa de pedidos é atualmente demasiado grande

Problema

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

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

Motivo

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

Resolução

Siga um destes procedimentos para resolver esse erro:

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

Cenário: O trabalho do runbook falha porque a cota alocada foi excedida

Problema

A sua tarefa do runbook falhou com o erro:

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

Motivo

Este erro ocorre quando a execução do trabalho excede a quota gratuita de 500 minutos para a sua conta. Essa cota se aplica a todos os tipos de tarefas de execução de tarefas. Algumas dessas tarefas são testar um trabalho, iniciar um trabalho a partir do portal, executar um trabalho usando webhooks ou agendar um trabalho para ser executado usando o portal do Azure ou seu datacenter. Para saber mais sobre os preços da automação, consulte Preços de automação.

Resolução

Se pretender utilizar mais de 500 minutos de processamento por mês, altere a sua subscrição do escalão Gratuito para o nível Básico:

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

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

Problema

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

Motivo

Este erro ocorre porque o runbook tentou gravar muitos dados de exceção para o fluxo de saída.

Resolução

Há um limite de 1 MB no fluxo de saída do trabalho. Certifique-se de que seu runbook inclua chamadas para um executável ou subprocesso usando try e catch bloqueia. Se as operações lançarem uma exceção, peça ao código que escreva 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 trabalhos do Hybrid Runbook Worker executados, o fluxo de saída truncado para 1 MB é exibido sem mensagem de erro.

Cenário: O início do trabalho do runbook foi tentado três vezes, mas falha sempre

Problema

Seu runbook falha com o seguinte erro:

The job was tried three times but it failed

Motivo

Este erro ocorre devido a um ou mais dos seguintes problemas:

  • Limite de memória. Um trabalho pode falhar se estiver usando mais de 400 MB de memória. Os limites documentados da memória alocada a um sandbox estão disponíveis em Limites do serviço de Automatização.

  • Soquetes de rede. As caixas restritas do Azure são limitadas a 1.000 soquetes de rede simultâneos. Para obter mais informações, veja Limites do serviço de Automatização.

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

  • Nenhuma autenticação com o Ative 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 autenticação com o Microsoft Entra ID usando a Biblioteca de Autenticação do Ative Directory do Azure (ADAL).

Resolução

  • Limite de memória, soquetes de rede. As maneiras sugeridas de trabalhar dentro dos limites de memória são dividir a carga de trabalho entre vários runbooks, processar menos dados na memória, evitar gravar saídas desnecessárias 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 clear, como $myVar.clear, para limpar variáveis e use [GC]::Collect para executar a coleta de lixo imediatamente. Essas ações reduzem o espaço ocupado pela memória do seu runbook durante o tempo de execução.

  • Módulo incompatível. Atualize os módulos do Azure com os passos em Como atualizar os módulos do Azure PowerShell na Automatização do Azure.

  • Nenhuma autenticação com o Ative Directory para área restrita. Quando efetuar a autenticação no Microsoft Entra ID com um runbook, confirme se o módulo do Azure AD está disponível na sua conta de Automatização. Confirme se concede à conta Run As as permissões necessárias para efetuar as tarefas que o runbook automatiza.

    Se seu runbook não puder chamar um executável ou subprocesso em execução em uma área restrita do Azure, use o runbook em um Runbook Worker híbrido. As funções de trabalho híbridas não estão limitadas pelos limites de memória e de rede que os sandboxes 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

Recebe a seguinte mensagem de erro quando inicia um trabalho do PowerShell num runbook executado no Azure:

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

Motivo

Esse erro pode indicar que runbooks executados em uma área restrita do Azure não podem ser executados no modo de idioma completo.

Resolução

Há duas maneiras de resolver esse erro:

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

Cenário: um runbook de execução prolongada não é concluído

Problema

Seu runbook é exibido em um estado Interrompido depois de executado por três horas. Você também pode receber este erro:

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

Esse comportamento é por design nas caixas de proteção do Azure devido ao monitoramento de compartilhamento justo de processos na Automação do Azure. Se um processo for executado por mais de três horas, o fair share interrompe automaticamente um runbook. O status de um runbook que ultrapassa o limite de tempo de compartilhamento justo difere de acordo com o tipo de runbook. Os runbooks do PowerShell e Python são definidos como um status Parado. Os runbooks do Fluxo de Trabalho do PowerShell são definidos como Falha.

Motivo

O runbook ultrapassou o limite de três horas permitido pelo fair share em um sandbox do Azure.

Resolução

Uma solução recomendada é executar o runbook em um Hybrid Runbook Worker. Os trabalhadores híbridos não estão limitados pelo limite de runbook de partilha justa de três horas que as sandboxes do Azure têm. Os runbooks executados em Runbook Workers híbridos devem ser desenvolvidos para oferecer suporte a comportamentos de reinicialização se houver problemas inesperados de infraestrutura local.

Outra solução é otimizar o runbook criando runbooks filho. Se o runbook percorrer a mesma função em vários recursos, por exemplo, em uma operação de banco de dados em vários bancos de dados, você poderá mover a função para um runbook filho. Cada runbook filho é executado em paralelo em um processo separado. Esse comportamento diminui a quantidade total de tempo para o runbook pai para concluir.

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

  • Start-AzAutomationRunbook. Este cmdlet permite-lhe iniciar um runbook e transmitir parâmetros para o runbook.
  • Get-AzAutomationJob. Se houver operações que precisem ser executadas após a conclusão do runbook filho, esse cmdlet permitirá que você verifique o status do trabalho para cada filho.

Cenário: Erro em fluxos de trabalhos relacionado com o método get_SerializationSettings

Problema

Você vê 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

Motivo

Este 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 do AzureRM e, em seguida, inicie outro trabalho usando apenas módulos Az, o que leva a uma falha na á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 seu runbook ou aplicativo tenta ser executado em uma área restrita do Azure, o ambiente nega acesso.

Motivo

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

Resolução

Para obter detalhes sobre o uso de caixas de proteção do Azure, consulte Ambiente de execução Runbook.

Cenário: Código de status Proibido inválido ao usar o Cofre da Chave dentro de um runbook

Problema

Quando tenta aceder ao Azure Key Vault através de um runbook de Automação do Azure, obtém o seguinte erro:

Operation returned an invalid status code 'Forbidden'

Motivo

Possíveis causas para esse problema são:

  • Não usar uma conta Run As.
  • Permissões insuficientes.

Resolução

Não utilizar uma conta Run As

Siga a Etapa 5 - Adicionar autenticação para gerenciar recursos do Azure para garantir que você esteja usando uma conta Run As para acessar o Cofre da Chave.

Permissões insuficientes

Adicione permissões ao Cofre da Chave para garantir que sua conta Run As tenha permissões suficientes para acessar o Cofre da Chave.

Cenário: O runbook falha com o erro "Comprimento do parâmetro excedido"

Problema

O runbook utiliza 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.

Motivo

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 valores de Parâmetro não pode exceder os 30 000 carateres.

Resolução

Para superar esse problema, você pode usar as Variáveis de Automação do Azure para passar valores para o runbook. Em alternativa, pode reduzir o número de carateres em nomes de Parâmetros e valores de Parâmetro para garantir que o comprimento total não excede os 30.000 carateres.

Próximos passos

Se não vir o problema aqui ou não conseguir resolvê-lo, tente um dos seguintes canais para obter mais suporte:

  • Obtenha respostas de especialistas do Azure através dos Fóruns do Azure.
  • Conecte-se com @AzureSupport, a conta oficial do Microsoft Azure para melhorar a experiência do cliente. O Suporte do Azure liga-o à comunidade do Azure para obter respostas, suporte e especialistas.
  • Se precisar de mais ajuda, você pode registrar um incidente de suporte do Azure. Vá para o site de suporte do Azure e selecione Obter Suporte.