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

Get-AzureRmResourceGroupDeployment lists machines I cannot see in the web interface

我的任务是自动创建 Azure VM,自然而然地我做了一些或多或少的失败迭代来尝试部署 VM 映像。作为其中的一部分,我 ,但有一个奇怪的原因它不起作用:

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

这个列表在哪里?部署失败后如何清理?

目前,Get-AzureRmResourceGroupDeployment returns:

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。如果您有更好的标签提示,请随时编辑此问题!)

如果您在 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