2012-07-05 24 views
5

Các lệnh mới Powershell (tài liệu ở đây: http://msdn.microsoft.com/en-us/library/windowsazure/jj152841) trông đáng yêu, nhưng có một xuất hiện mất tích:Lệnh ghép ngắn Azure Powershell cho 1,7, tháng 6 năm 2012: Điều gì đã xảy ra với Get-OperationStatus?

Get-OperationStatus -WaitToComplete

Without này hoạt động Azure của tôi (ví dụ Set-AzureDeployment) không chờ đợi để hoàn tất.

Điều này khiến bạn khó biết khi nào, ví dụ: một phiên bản dàn dựng đang chạy trước khi thực hiện trao đổi VIP.

Có lựa chọn thay thế nào không?

+0

Ngoài ra, tôi dường như không thể cài đặt các phiên bản cũ hơn của lệnh ghép ngắn Powershell; chúng không thành công trên trình kiểm tra phụ thuộc, vì có vẻ như 1,6 của SDK không khả dụng nữa ... –

+0

v1.6 Tải xuống SDK là [tại đây] (http://www.microsoft.com/en-us/download /details.aspx?id=28045), trong trường hợp bạn quyết định đi tuyến đó. –

+0

Xem câu trả lời của tôi bên dưới. Nói chung các lệnh ghép ngắn _do_ đợi hoàn thành, ngoại trừ 'Set-AzureDeployment', tất nhiên là cái chúng ta muốn đợi! Nhưng chúng tôi có các bit liên quan, chúng tôi sẽ cần phải sắp xếp này. –

Trả lời

10

Vì vậy, sau khi điều tra, giả ban đầu của tôi là một phần sai: các cuộc gọi đến các cmdlet Powershell mới làm chờ đợi để hoàn thành công, trừ cho Set-AzureDeployment -newStatus "Running".

Điều này là tốt, vì chúng tôi không còn cần phải có các cuộc gọi đến Get-OperationStatus được phân tán qua tập lệnh; tuy nhiên, điều này không tốt khi Set-AzureDeployment rời khỏi quá trình triển khai.

Chúng tôi có thể gọi Get-AzureDeployment, và lặp lại qua số RoleInstanceList để tìm hiểu điều gì đang diễn ra. Giống như vậy:

function Get-StagingReady { 
    $stagingStatus = Get-AzureDeployment $azureService -slot staging 
    if (-not $($stagingStatus.Status -eq "Running")) { 
     Write-Host $(" ... ... Staging slot status is not Running; value is " + $stagingStatus.Running) 
     return $False 
    } 

    if (-not $stagingStatus.RoleInstanceList) { 
     Write-Host " ... ... Staging slot has no instances configured yet." 
     return $False 
    } 

    $notReady = $False 

    Foreach ($roleInstance in $stagingStatus.RoleInstanceList) { 
     if (-not $($roleInstance.InstanceStatus -eq "ReadyRole")) { 
      Write-Host $(" ... ... ... Staging slot instance " + $roleInstance.InstanceName + " has status " + $roleInstance.InstanceStatus) 
      $notReady = $True 
     } 
    } 

    if ($notReady) { 
     Write-Host " ... ... One or more instances not running." 
     return $False 
    } 

    Write-Host " ... Staging slot ready for use." 
    return $True 
} 


function Wait-ForStagingToBeReady { 
    while (-not $(Get-StagingReady)) { 
     Write-Host " ... ... Staging slot not ready, waiting 15 seconds for Azure to spin up instances." 
     Start-Sleep -s 15 
    } 
} 


function Start-Staging { 
    Write-Host " ... Starting staging slot." 

    $staging = Get-Staging $azureService 
    $result = Set-AzureDeployment ` 
      -Status ` 
      -serviceName $azureService ` 
      -slot "Staging" ` 
      -newStatus "Running" 

    if (-not $?) { 
     Write-Host 
     Write-Host "Unable to start staging slot." 
     Write-Host "DEPLOY FAILED" 
     Write-Host 
     exit 1 
    } 

    Wait-ForStagingToBeReady 

    Write-Host " ... Deployment in Staging slot started." 
} 
+0

Làm tốt lắm! Tôi đã suy nghĩ nếu có một cách thay thế cho 'Get-OperationStatus'. Và nó là xấu để loại bỏ nó trong phiên bản mới hơn mà không cần bất kỳ giải thích. –

0

nhưng có một mà xuất hiện thiếu

Nếu nó không được hỗ trợ, sau đó hãy tìm một sự thay thế. Ví dụ, vui lòng sử dụng REST API trực tiếp thay vì sử dụng PowerShell. API REST cho phép chúng tôi theo dõi các yêu cầu không đồng bộ: http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.

Ngoài ra, bạn cũng có thể gửi yêu cầu tính năng trên http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting.

Trân trọng,

Ming Xu.

+0

Có nhiều điều khiến cho các lệnh ghép ngắn Powershell khó sử dụng trong một môi trường kịch bản, đó là những gì tôi muốn làm cho kịch bản triển khai liên tục của mình. Phải viết kịch bản Powershell của riêng tôi dựa vào API REST để đảm bảo rằng mỗi hoạt động hoàn toàn nguyên tử sẽ lấy bánh quy. –

+0

Tôi đã đăng đề xuất ở đây: http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/2980574-ensure-the-powershell-cmdlets-are-suitable-for-scr –

Các vấn đề liên quan