Powershell
使用 PowerShell 從 VM 內部獲取目前 Azure VM 的詳細資訊
假設我在 Azure 中預配了一台執行 Windows Server 2016 標準 Azure 映像的虛擬機。
無需在 VM 上安裝任何東西,如何使用 PowerShell 從 VM 內部檢索目前 VM 的詳細資訊?
我想檢索的一些屬性是:
- 虛擬機名稱
- 虛擬機 IP 地址
- 訂閱號
- 虛擬機位置
我相信這是可能的,因為 Azure 中的 Windows 桌面映像會自動顯示上述大部分資訊。那麼如何通過 PowerShell 以程式方式獲取這些資訊呢?
(像往常一樣,微軟文件辜負了他們毫無價值的聲譽)
任何幫助將不勝感激。
我建議您使用Azure Instance Metadata Service
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri http://169.254.169.254/metadata/instance?api-version=2020-09-01 | ConvertTo-Json
{ "compute": { "azEnvironment": "AZUREPUBLICCLOUD", "isHostCompatibilityLayerVm": "true", "licenseType": "Windows_Client", "location": "westus", "name": "examplevmname", "offer": "Windows", "osProfile": { "adminUsername": "admin", "computerName": "examplevmname", "disablePasswordAuthentication": "true" }, "osType": "linux", "placementGroupId": "f67c14ab-e92c-408c-ae2d-da15866ec79a", "plan": { "name": "planName", "product": "planProduct", "publisher": "planPublisher" }, "platformFaultDomain": "36", "platformUpdateDomain": "42", "publicKeys": [{ "keyData": "ssh-rsa 0", "path": "/home/user/.ssh/authorized_keys0" }, { "keyData": "ssh-rsa 1", "path": "/home/user/.ssh/authorized_keys1" } ], "publisher": "RDFE-Test-Microsoft-Windows-Server-Group", "resourceGroupName": "macikgo-test-may-23", "resourceId": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/virtualMachines/examplevmname", "securityProfile": { "secureBootEnabled": "true", "virtualTpmEnabled": "false" }, "sku": "Windows-Server-2012-R2-Datacenter", "storageProfile": { "dataDisks": [{ "caching": "None", "createOption": "Empty", "diskSizeGB": "1024", "image": { "uri": "" }, "lun": "0", "managedDisk": { "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampledatadiskname", "storageAccountType": "Standard_LRS" }, "name": "exampledatadiskname", "vhd": { "uri": "" }, "writeAcceleratorEnabled": "false" }], "imageReference": { "id": "", "offer": "UbuntuServer", "publisher": "Canonical", "sku": "16.04.0-LTS", "version": "latest" }, "osDisk": { "caching": "ReadWrite", "createOption": "FromImage", "diskSizeGB": "30", "diffDiskSettings": { "option": "Local" }, "encryptionSettings": { "enabled": "false" }, "image": { "uri": "" }, "managedDisk": { "id": "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/macikgo-test-may-23/providers/Microsoft.Compute/disks/exampleosdiskname", "storageAccountType": "Standard_LRS" }, "name": "exampleosdiskname", "osType": "Linux", "vhd": { "uri": "" }, "writeAcceleratorEnabled": "false" } }, "subscriptionId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx", "tags": "baz:bash;foo:bar", "version": "15.05.22", "vmId": "02aab8a4-74ef-476e-8182-f6d2ba4166a6", "vmScaleSetName": "crpteste9vflji9", "vmSize": "Standard_A3", "zone": "" }, "network": { "interface": [{ "ipv4": { "ipAddress": [{ "privateIpAddress": "10.144.133.132", "publicIpAddress": "" }], "subnet": [{ "address": "10.144.133.128", "prefix": "26" }] }, "ipv6": { "ipAddress": [ ] }, "macAddress": "0011AAFFBB22" }] } }
或資源圖
Search-AzGraph -Query "Resources | where type =~ 'Microsoft.Compute/virtualMachines' | limit 1" | ConvertTo-Json -Depth 100
[ { "id": "/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/ContosoVM1", "kind": "", "location": "westus2", "managedBy": "", "name": "ContosoVM1", "plan": {}, "properties": { "hardwareProfile": { "vmSize": "Standard_B2s" }, "networkProfile": { "networkInterfaces": [ { "id": "/subscriptions/<subscriptionId>/MyResourceGroup/providers/Microsoft.Network/networkInterfaces/contosovm1535", "resourceGroup": "MyResourceGroup" } ] }, "osProfile": { "adminUsername": "localAdmin", "computerName": "ContosoVM1", "secrets": [], "windowsConfiguration": { "enableAutomaticUpdates": true, "provisionVMAgent": true } }, "provisioningState": "Succeeded", "storageProfile": { "dataDisks": [], "imageReference": { "offer": "WindowsServer", "publisher": "MicrosoftWindowsServer", "sku": "2016-Datacenter", "version": "latest" }, "osDisk": { "caching": "ReadWrite", "createOption": "FromImage", "diskSizeGB": 127, "managedDisk": { "id": "/subscriptions/<subscriptionId>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/ContosoVM1_OsDisk_1_9676b7e1b3c44e2cb672338ebe6f5166", "resourceGroup": "MyResourceGroup", "storageAccountType": "Premium_LRS" }, "name": "ContosoVM1_OsDisk_1_9676b7e1b3c44e2cb672338ebe6f5166", "osType": "Windows" } }, "vmId": "bbb9b451-6dc7-4117-bec5-c971eb1118c6" }, "resourceGroup": "MyResourceGroup", "sku": {}, "subscriptionId": "<subscriptionId>", "tags": {}, "type": "microsoft.compute/virtualmachines" } ]
使用 Run Command 在您的 Windows VM 中執行 PowerShell 腳本,此處有更多詳細資訊
az vm run-command invoke --command-id RunPowerShellScript --name win-vm -g my-resource-group \ --scripts @script.ps1 --parameters "arg1=somefoo" "arg2=somebar"