【问题标题】:how can i get a list of Azure VMS with operating system installed using Azure CLI?如何获取使用 Azure CLI 安装操作系统的 Azure VMS 列表?
【发布时间】:2021-07-07 11:14:21
【问题描述】:

我运行以下命令并获取一个 vm 的列表,其中详细说明了安装的操作系统,但是,有没有办法我可以为订阅中的所有 VMS 执行此操作,而不是一个一个地执行此操作并将其输出到 csv文件?我需要知道所有 vm 上都安装了哪个版本的 windows

az vm show -g $vmresourcegroup -n $vmname --query '[name, storageProfile.imageReference]'

【问题讨论】:

    标签: azure powershell azure-vm


    【解决方案1】:

    通过使用以下脚本,您可以使用 VirtualMachineName、操作系统及其 SKU 名称提取特定订阅下的虚拟机列表

    az login
    
    $result = az vm list --subscription <subscriptionName> `
     --query "[].[name,storageProfile.imageReference.offer,storageProfile.imageReference.sku]" 
    $json = $result | ConvertFrom-Json
    
    $json | % {
    $item = New-Object PSCustomObject
    $item | Add-Member -NotePropertyName "vmName" -NotePropertyValue $_.SyncRoot[0]
    $item | Add-Member -NotePropertyName "Os" -NotePropertyValue $_.SyncRoot[1]
    $item | Add-Member -NotePropertyName "sku" -NotePropertyValue $_.SyncRoot[2]
    
    $item | Export-Csv C:\Users\Desktop\9.csv  -NoTypeInformation  -Append
    }
    

    【讨论】:

    • @itye1970 - 如果提供的上述答案有帮助?如果是这样,您能否接受答案作为解决方案。这可以帮助将来有类似查询的其他社区用户。
    【解决方案2】:

    关于你问题的第一部分:

    az vm list 将返回当前订阅中的所有虚拟机。当它返回一个 vms 数组时,您还需要相应地调整您的 JMESPATH 查询:

    az vm list --query '[].[name, storageProfile.imageReference]'
    

    关于你问题的第二部分:

    为了获得 csv 输出,您需要先展平输出,因为“imageReference”有几个子属性。

    我从您问题中的标签中得知您正在 PowerShell 中运行 az cli:

     az vm list -o json | 
      ConvertFrom-Json | 
      Select-Object -ExpandProperty StorageProfile -Property Name | 
      Select-Object -ExpandProperty ImageReference -Property Name |
      ConvertTo-Csv
    

    【讨论】:

    • 可以,但是如果虚拟机被释放,它不会列出操作系统?
    • 我刚刚尝试了针对两个已释放虚拟机的命令。显示所有 ImageReference 属性。
    • 我在运行上述命令时得到了这个:Select-Object:找不到属性“storageProfile”。在 line:3 char:3 + Select-Object -ExpandProperty storageProfile -Property Name | + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ + CategoryInfo : InvalidArgument: ( ... :PSObject) [Select-Object], PSArgumentException
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多