我正在编写脚本以在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/