gpt4 book ai didi

powershell - 使用 powershell windows azure commandlet,如何执行 Reset-RoleInstance 并等待操作完成

转载 作者:行者123 更新时间:2023-12-03 03:20:28 25 4
gpt4 key购买 nike

如何执行 Reset-RoleInstance 并等待操作完成...

我一直在尝试使用 Windows azure powershell commandlet 执行 Reset-RoleInstance,然后执行 |获取操作状态 -WaitToComplete。

因此文档说“此操作异步执行。要确定管理服务是否已完成处理请求,请使用 Reset-RoleInstance 返回的操作 ID 调用 Get-OperationStatus cmdlet,并可以选择通过指定 – WaitToComplete 参数。”

我尝试过这个版本:

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

但这有一个“GetOperationStatus”类型。因此,当我替换为“Get-OperationStatus”时,PS 会提示 OperationId 为 null 或为空。

“Get-OperationStatus:无法验证参数“OperationId”的参数。该参数 为 null 或为空。提供一个不为 null 或为空的参数,然后尝试以下命令再次d。”

所以,接下来我尝试这个版本的 PS 脚本...

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

这一次,Get-OperationStatus 开始抛出错误...

Get-OperationStatus:HTTP 状态代码:BadRequest - HTTP 错误消息:未找到操作请求 ID ... 在 Microsoft.WindowsAzure.Samples.ManagementTools.PowerShell.Services.Common.GetOperationStatusCommand 中

Get-OperationStatus:未将对象引用设置为对象的实例....在 Microsoft.WindowsAzure.Samples.ManagementTools.PowerShell.Services.Common.GetOperationStatusCommand 中“*

我还成功打印了 $out 并且 OperationId 实际上为 null,但在输出的 RoleInstances 成员中有这个值...RoleInstances:{实例名称:MyService.MyWorker_IN_0 - 操作 ID:6e87a07fb9a5474499aed3f9ebe99129}

这是 $out 变量的输出...“RoleInstances:{实例名称:MyService.MyWorker_IN_0 - 操作 ID:6e87a07fb9a5474499aed3f9ebe99129}ServiceName : ...我的服务名称SubscriptionId : ...我的订阅 ID证书:...我的证书信息

操作 ID:”

最佳答案

当您使用Reset-RoleInstance时,它会重新启动/重新镜像部署的实例。
整个操作本身没有 OperationId,但各个 RoleInstances 有相应的 < strong>OperationId 每个。

这是 Reset-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>

正如您所看到的,末尾的OperationIdNullOrEmpty。因此,您不应该等待 Reset-RoleInstanceOperationId,而应该等待 OperationIds em> 各个RoleInstances
例如: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"

关于powershell - 使用 powershell windows azure commandlet,如何执行 Reset-RoleInstance 并等待操作完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9729150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com