2016-10-03 47 views
0

下面的工作流程在Azure中自動化是行不通的。運行在混合運行手冊工人,我得到:失去上下文後掛起工作流

  1. Azure的上下文是否正確設置和顯示
  2. VM對象信息是否正確顯示
  3. 工作流暫停
  4. 暫停後,立即將工作流程使用恢復門戶
  5. Azure的上下文丟失,收到錯誤

    運行登錄-AzureRmAccount登錄。

運行相同的上一個藍色的工人表示與上面相同,但導致失敗的作業錯誤

工作流程的工作無法繼續,要麼是因爲持久性數據不能完全保存或保存的持久性數據已損壞。您必須重新啓動工作流程。 (關鍵不適於在指定狀態下使用。)

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

Azure Automation PowerShell Workflow文檔:

因爲用戶名憑據不保留你叫暫停,工作流活動或者在最後檢查點之後,則需要將憑據設置爲空,然後在調用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 
    } 
}