2012-03-15 33 views
1

如何我執行復位-RoleInstance,等待操作完成...使用PowerShell的Windows Azure命令行開關,如何我執行復位-RoleInstance,等待操作完成

我一直在嘗試使用windows azure powershell命令行程序執行Reset-RoleInstance,後跟| Get-OperationStatus -WaitToComplete。

因此,文檔中提到「此操作異步執行,要確定管理服務是否已完成處理請求,請使用由Reset-RoleInstance返回的操作標識調用Get-OperationStatus cmdlet,並可選擇等待完成-WaitToComplete參數。「

我已經試過這個版本:

Reset-RoleInstance -ServiceName MyTodo -DeploymentSlot production -SubscriptionId $subsId -Certificate $cert –reboot | GetOperationStatus -WaitToComplete 

但是這有一個類型的 「GetOperationStatus」。所以當我用「Get-OperationStatus」取代時,PS會抱怨OperationId爲空或爲空。

「Get-OperationStatus:無法驗證參數'OperationId'的參數,參數 爲空或空,請提供非空或空的參數,然後再次嘗試命令 d。

所以,下次我試試這個版本的PS腳本...

Reset-RoleInstance -ServiceName $serviceName -DeploymentSlot Production -InstanceName $i.InstanceName -SubscriptionId $subid -Certificate $cert -Reboot -OutVariable out | Get-OperationStatus -OperationId out.OperationId -WaitToComplete 

這一次,獲取-OperationStatus開始引發錯誤...

GET-OperationStatus:HTTP狀態代碼:錯誤請求 - HTTP錯誤消息:該操作請求ID沒有被發現 ...在Microsoft.WindowsAzure.Samples.ManagementTools.PowerShell.Services.Common.GetOperationStatusCommand

的Get- OperationStatus:對象引用未設置爲一個對象的實例 ....在Microsoft.WindowsAzure.Samples.ManagementTools.PowerShell.Services.Common.GetOperationStatusCommand「*

我也設法打印$ out和OperationId是INFACT空但在輸出的RoleInstances成員有這樣的價值... RoleInstances:{實例名稱:MyService.MyWorker_IN_0 - 操作ID:6e87a07fb9a5474499aed3f9ebe99129}

這裏是$ out變量的輸出.. 「RoleInstances:{Instance Name:MyService.MyWorker_IN_0 - Operation Id:6e87a07fb9a5474499aed3f9ebe99129} S erviceName:......我的服務名稱 SubscriptionId:......我的訂閱ID 證書:......我的證書信息

OperationId: 「

回答

1

當您使用復位-RoleInstance,它要麼重啓/ reimages部署的實例。
整個操作本身不具有OperationId但個別RoleInstances具有相應OperationId每個。

這是復位RoleInstance的輸出如何看起來像:

PS > $operation = Reset-RoleInstance -ServiceName "MyServiceName" -DeploymentSlot "production" -Restart -SubscriptionId "MySubscriptionID" -Certificate $cert 
PS > $operation 
- 
RoleInstances : { Instance Name: MyInst1 - Operation Id: OpId1, 
-     Instance Name: MyInst2 - Operation Id: OpId2 } 

ServiceName : MyServiceName 
SubscriptionId : MySubscriptionID 
Certificate : [Subject] 
-    ------- blah -------- 

-    [Issuer] 
-    ------- blah -------- 

-    [Serial Number] 
-    ------- blah -------- 

-    [Not Before] 
-    ------- blah -------- 

-    [Not After] 
-    ------- blah -------- 

-    [Thumbprint] 
-    ------- blah -------- 

OperationId : <NullOrEmpty> 

正如你可以看到OperationId在到底是NullOrEmpty。所以,你不應該等待的復位,RoleInstance但應在OperationIds個人RoleInstances
例如
等待的OperationId:OpId1,OpId2

PS > Write-Host "Rebooting the instances" 
PS > $operation = Reset-RoleInstance -Reboot -SubscriptionId $SubscriptionId -ServiceName $ServiceName -DeploymentSlot "Production" -Certificate $certificate 
PS > Write-Host "Waiting for all reboot operations to complete..." 
PS > $operation.RoleInstances | % { Get-OperationStatus -OperationId $_.OperationId -WaitToComplete -SubscriptionId $SubscriptionId -Certificate $certificate } 
PS > Write-Host "All role-instances have been rebooted" 
+0

好的,這是有道理的。謝謝。 – CedricB 2012-04-18 20:19:01

相關問題