[英]How to get ResourceId of VM script is running on in Azure with PowerShell?
我正在編寫一個腳本來在 Azure 中設置警報,我想通過 Azure 中的自定義腳本擴展來運行該腳本,仍然是運行Add-AzureRmMetricAlertRule
所需的參數Add-AzureRmMetricAlertRule
是TargetResourceId
,它是警報應該所在的 VM 的 ResourceId進行配置。
所以現在我想知道 - 如何使用 PowerShell 獲取當前 VM 的 ResourceId?
我嘗試的一切都假設我有一個 ResourceName 或者我遍歷訂閱中的 VM 列表,而我感興趣的是運行腳本的特定實例。
Azure 有一個類似於 AWS/GCE 提供的實例元數據服務。 您應該能夠執行以下操作:
卷曲:
curl -H Metadata:true "http://169.254.169.254/metadata/instance?api-version=2019-11-01"
電源:
(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
如果我的理解是正確的,您可以使用以下命令來獲取 VM 的資源 ID。
(get-azurermvm -ResourceGroupName shuihv -Name shui).id
此外,如果您知道 VM 的資源組名稱和 VM 名稱,也可以構造 id。 格式應如下所示:
/subscriptions/<subscription id>/resourceGroups/<group name>/providers/Microsoft.Compute/virtualMachines/<vm name>
更新:
如上所述,您可以使用Azure 元數據來獲取 VM 的名稱。 根據 VM 的名稱,您可以使用 Azure PowerShell 獲取 VM 的資源組名稱。
$vm=get-azurermvm |Where-Object {$_.Name -eq "shui"}
$vm.ResourceGroupName
然后你可以構造資源ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.