我的任务是自动创建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。如果您有更好标签的提示,请随时编辑此问题!)
答案 0 :(得分:1)
如果您在Azure资源管理模式下创建VM,它将附加一个部署。实际上,如果您创建任何资源,它将附加资源部署。
如果删除资源,您仍然会在那里拥有部署记录,因为您仍然在某个阶段部署了它。将部署视为帐户内发生的审计跟踪的一部分。
您可以使用Remove-AzureRmResourceGroupDeployment
删除部署记录,但没有什么意义,因为部署与Azure的操作无关。没有相关费用它们只是历史记录。
使用Get-AzureRmResourceGroupDeployment
查询部署将产生以下字段。
DeploymentName
Mode
Outputs
OutputsString
Parameters
ParametersString
ProvisioningState
ResourceGroupName
TemplateLink
TemplateLinkString
Timestamp
因此,您可以通过ProvisioningState
了解与TemplateLink
和TemplateLinkString
一起使用的模板是否成功,并检查部署的输出等。这对于计算什么模板工作,什么没有。
如果您想查看可能需要付费的实际资源,可以使用Get-AzureRmResource
如果您只想检索Azure订阅中存在的VM名称列表,可以使用
(Get-AzureRmVM).Name