在Suspend-Workflow之后丢失上下文

时间:2016-10-03 09:36:11

标签: azure-automation powershell-workflow

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

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

    运行Login-AzureRmAccount登录。

  7. 在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
    }
    

1 个答案:

答案 0 :(得分:1)

来自Azure Automation PowerShell Workflow文档:

  

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

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

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