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:
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
Investigue os fluxos de erros do runbook.
Observe estes fluxos para obter mensagens específicas e compare-os com os erros documentados neste artigo.
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.
Se o runbook ficar suspenso ou falhar inesperadamente:
- Renove o webhook se estiver a tentar utilizar um webhook expirado para iniciar o runbook.
- Verifique os estados dos trabalhos para determinar os estados atuais do runbook e algumas causas possíveis do problema.
- Adicione outra saída ao runbook para identificar o que acontece antes de o mesmo ser suspenso.
- Processe as exceções acionadas pelo trabalho.
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
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:
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.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
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.
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:
Vá para a conta Run As de automação e copie a ID do aplicativo e a impressão digital.
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.
Adicione a ID do aplicativo coletada anteriormente. Selecione Permissões de Colaborador .
Copie o nome da assinatura.
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-AzureSubscription
Select-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/<subscriptionIdOfSubscriptionWhichDoesntContainTheVM>/resourceGroups/REsourceGroupName/providers/Microsoft.Compute/virtualMachines/VMName '.
ErrorCode: AuthorizationFailed
StatusCode: 403
ReasonPhrase: Forbidden Operation
ID : <AGuidRepresentingTheOperation> At line:51 char:7 + $vm = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $UNBV... +
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:
- Na sua conta de Automatização, selecione Módulos e, em seguida, Atualizar módulos do Azure.
- 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:
- Para obter um módulo do Azure, consulte Como atualizar os módulos do Azure PowerShell na Automatização do Azure para saber como atualizar os módulos na sua conta de Automatização.
- No caso dos módulos que não sejam do Azure, certifique-se de que o módulo é importado para a sua conta de Automatização.
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-pnplistitem
sem 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-AzAccount
o , 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:
- Entre na sua assinatura do Azure.
- Selecione a conta de automação para atualizar.
- Selecione Configurações e, em seguida, selecione Preços.
- 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 numa variável de automatização. Esta técnica impede que a mensagem seja gravada no fluxo de saída do trabalho. Para trabalhos da Função de Trabalho de Runbook Híbrida executados, o fluxo de saída truncado para 1 MB é apresentado 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 ouCannot 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. Estas ações reduzem o espaço de memória do seu livro de execução 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:
- Em vez de usar Start-Job, use Start-AzAutomationRunbook para iniciar o runbook.
- Experimente executar o runbook numa Função de Trabalho de Runbook Híbrida.
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.
Documentos recomendados
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.