Get-AzureRmResourceGroupDeployment列出了我在Web界面中看不到的机器

时间:2016-02-04 09:14:02

标签: powershell azure azure-powershell azure-resource-manager

我的任务是自动创建Azure VM,我自然会尝试部署VM映像或多或少破坏迭代。作为其中的一部分,我automatically allocate serial hostnames,但有一个奇怪的原因,它不起作用:

上面链接中的代码运行良好,但是我的ResourceGroup的内容不是预期的。每次部署(成功与否)时,都会在Get-AzureRmResourceGroupDeployment返回的任何列表中创建新条目;但是,在Azure Web界面中,我只能看到其中一些条目。例如,如果我省略了JSON文件的参数,Azure甚至无法开始部署某些内容 - 但主机名仍然以某种方式保留。

此列表在哪里?如何在部署失败后进行清理?

目前,Get-AzureRmResourceGroupDeployment返回:

azure-w10-tfs13
azure-w10-tfs12
azure-w10-tfs11
azure-w10-tfs10
azure-w10-tfs09
azure-w10-tfs08
azure-w10-tfs07
azure-w10-tfs06
azure-w10-tfs05
azure-w10-tfs02
azure-w7-tfs01
azure-w10-tfs19
azure-w10-tfs1

虽然网络界面只列出:

azure-w10-tfs12  
azure-w10-tfs13  
azure-w10-tfs09
azure-w10-tfs05
azure-w10-tfs02
使用代码$siblings = (Get-AzureRmResource).Name | Where-Object{$_ -match "^$hostname\d+$"}

解决了

(PS。如果您有更好标签的提示,请随时编辑此问题!)

1 个答案:

答案 0 :(得分:1)

如果您在Azure资源管理模式下创建VM,它将附加一个部署。实际上,如果您创建任何资源,它将附加资源部署。

如果删除资源,您仍然会在那里拥有部署记录,因为您仍然在某个阶段部署了它。将部署视为帐户内发生的审计跟踪的一部分。

您可以使用Remove-AzureRmResourceGroupDeployment删除部署记录,但没有什么意义,因为部署与Azure的操作无关。没有相关费用它们只是历史记录。

使用Get-AzureRmResourceGroupDeployment查询部署将产生以下字段。

DeploymentName 
Mode              
Outputs           
OutputsString     
Parameters        
ParametersString  
ProvisioningState 
ResourceGroupName 
TemplateLink      
TemplateLinkString
Timestamp      

因此,您可以通过ProvisioningState了解与TemplateLinkTemplateLinkString一起使用的模板是否成功,并检查部署的输出等。这对于计算什么模板工作,什么没有。

如果您想查看可能需要付费的实际资源,可以使用Get-AzureRmResource

如果您只想检索Azure订阅中存在的VM名称列表,可以使用

(Get-AzureRmVM).Name