我正在编写脚本以在Azure中设置警报,我想通过Azure中的自定义脚本扩展运行该脚本,运行Add-AzureRmMetricAlertRule所需的参数之一仍然是TargetResourceId,它是应在其中配置警报的VM的ResourceId 。

所以现在我想知道-如何使用PowerShell获取当前VM的ResourceId?

我尝试的所有操作都假定我拥有ResourceName或对订阅中的VM列表进行了迭代,而我感兴趣的是脚本在其上运行的特定实例。

最佳答案

Azure的instance metadata service与AWS / GCE提供的类似。您应该能够执行以下操作:

CURL:

curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2019-11-01"

PowerShell:
(Invoke-RestMethod "http://169.254.169.254/metadata/instance?api-version=2019-11-01" -Headers @{Metadata = $true})

从服务器获取实例元数据。

请注意,在上面的PowerShell示例中,Invoke-RestMethod将JSON响应自动转换为PowerShell对象类型。

在此处请求/讨论了此功能:https://feedback.azure.com/forums/216843-virtual-machines/suggestions/6204911-provide-virtual-machine-instance-metadata-support

关于powershell - 如何使用PowerShell在Azure中运行VM脚本的ResourceId?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45824329/

10-14 19:11
查看更多