0

Azure 自动化中的以下工作流不起作用。在 Hybrid Runbook Worker 上运行我得到:

  1. Azure 上下文已正确设置和显示
  2. VM对象信息正确显示
  3. 工作流暂停
  4. 暂停后立即使用门户恢复工作流
  5. Azure 上下文丢失,出现错误

    运行 Login-AzureRmAccount 登录。

在 Azure 工作人员上运行相同显示与上述相同,但会导致作业失败并出现错误

无法恢复工作流作业,原因可能是无法完全保存持久性数据,或者保存的持久性数据已损坏。您必须重新启动工作流程。(密钥在指定状态下无效。)

workflow TestSub {
  $SubscriptionName = Get-AutomationVariable -Name 'VAR-AUTO-SubscriptionName'
  $AzureAutomationCredential = Get-AutomationPSCredential -Name 'CRE-AUTO-AutomationUser'
  $AzureAccount = Add-AzureRmAccount -Credential $AzureAutomationCredential -SubscriptionName $SubscriptionName
  Get-AzureRmContext

  Get-AzureRmVM -ResourceGroupName AMS-CB-FELX-RG01 -Name li-felixc01
  Suspend-Workflow

  Get-AzureRmContext   Get-AzureRmVM -ResourceGroupName AMS-CB-FELX-RG01 -Name li-felixc01
}
4

1 回答 1

1

Azure 自动化 PowerShell 工作流文档:

由于在调用 Suspend-Workflow 活动或最后一个检查点之后不会保留用户名凭据,因此您需要将凭据设置为 null,然后在调用 Suspend-Workflow 或检查点后再次从资产存储中检索它们。否则,您可能会收到以下错误消息:无法恢复工作流作业,原因可能是无法完全保存持久性数据,或者保存的持久性数据已损坏。您必须重新启动工作流程。

以下是如何正确执行此操作的示例:

workflow CreateTestVms
{
   $Cred = Get-AzureAutomationCredential -Name "MyCredential"
   $null = Add-AzureRmAccount -Credential $Cred

   $VmsToCreate = Get-AzureAutomationVariable -Name "VmsToCreate"

   foreach ($VmName in $VmsToCreate)
     {
      # Do work first to create the VM (code not shown)

      # Now add the VM
      New-AzureRmVm -VM $Vm -Location "WestUs" -ResourceGroupName "ResourceGroup01"

      # Checkpoint so that VM creation is not repeated if workflow suspends
      $Cred = $null
      Checkpoint-Workflow
      $Cred = Get-AzureAutomationCredential -Name "MyCredential"
      $null = Add-AzureRmAccount -Credential $Cred
     }
 }
于 2016-11-17T02:12:14.150 回答