簡體   English   中英

如何使用 PowerShell 獲取在 Azure 中運行的 VM 腳本的 ResourceId?

[英]How to get ResourceId of VM script is running on in Azure with PowerShell?

我正在編寫一個腳本來在 Azure 中設置警報,我想通過 Azure 中的自定義腳本擴展來運行該腳本,仍然是運行Add-AzureRmMetricAlertRule所需的參數Add-AzureRmMetricAlertRuleTargetResourceId ,它是警報應該所在的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM