1

我想查询现有的 azure 虚拟机以检查它是否已完全部署并能够远程连接。有没有办法使用 Azure Rest API 做到这一点?

我在下面概述了我当前的流程以及为什么我希望这样的电话。

我正在使用Windows Azure 管理库来创建一个使用ComputeManagementClientCreateDeploymentAsync函数的 VM。然后返回成功状态,如果我随后对部署进行获取,它的状态为DeploymentStatus.Running.

运行后,我正在尝试创建一个远程 powershell 连接,以便我可以格式化磁盘。我不断收到错误,因为它无法创建会话。

WinRM 无法完成该操作。验证指定的计算机名称是否有效,该计算机可通过网络访问,并且 WinRM 服务的防火墙例外已启用并允许从该计算机进行访问。默认情况下,公共配置文件的 WinRM 防火墙例外限制对同一本地子网中的远程计算机的访问。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。

如果我进入 azure 管理门户,状态为正在配置,我认为这就是我无法创建会话的原因。

过程

CreateAzureVM()
CheckAzureVmCanBeConnectedTo() //I am unable to do this correctly
RunPowershellScriptOnVM() // this fails
4

3 回答 3

1

您应该能够使用Get Deployment来轮询角色的 InstanceStatus(注意 InstanceStatus != Status)。当 InstanceStatus 为 ReadyRole 时,您应该能够登录到您的机器。

部署状态和角色实例状态之间存在区别。将角色视为实际的虚拟机,而部署可能描述多个虚拟机。

于 2014-08-15T01:51:03.983 回答
1
SubscriptionCloudCredentials certificate = new CertificateCloudCredentials(subscriptionId, x509Certificate);

IComputeManagementClient ComputeManagementClient = new ComputeManagementClient(certificate);

var deployments = ComputeManagementClient.Deployments.GetBySlot(hostedServiceName, DeploymentSlot.YourDeploymentSlot);

var state = deployments.RoleInstances.First().PowerState;

我希望这会对你有所帮助。

于 2015-06-25T10:03:55.577 回答
0

如果没有看到您的代码,很难确切地说出您需要做什么,但我建议您使用 await 关键字来等待完成对 Azure API 的调用以创建 VM。请参阅此 MSDN 指南中“部署虚拟机”下的代码示例:http: //msdn.microsoft.com/en-us/library/azure/dn722415.aspx#bk_createres

于 2014-08-15T01:44:06.487 回答