【问题标题】:How to list Azure recovery services vault of all the subscription and export to csv with required parameter如何列出所有订阅的 Azure 恢复服务保管库并使用所需参数导出到 csv
【发布时间】:2021-04-19 09:12:10
【问题描述】:

我编写了一个 PowerShell 脚本来检索跨多个订阅的 Azure 恢复服务保管库列表。

这是我的代码:

$subscriptions = Get-AzSubscription

ForEach ($Subscription in $Subscriptions) {
    Set-AzContext -SubscriptionId 77a74465-c065-4108-b270-edd84f918fe0

    $vaults = get-azrecoveryservicesvault
    
    ForEach ($vault in $vaults) 
    {
        Set-AzRecoveryServicesVaultContext -Vault $vault
        Get-AzRecoveryServicesVault |Select-Object "Name","ResourceGroupName","Location","SubscritptionId" | Export-Csv "C:\RSV-Report.csv" -NoTypeInformation -Encoding ASCII -Append  
    }
}

这会返回如下输出:

它没有返回所有资源的订阅 ID。

但是,当我使用此代码调用单个订阅和单个资源组时:

Set-AzContext -SubscriptionId 77a74465-c065-4108-b270-********
Get-AzRecoveryServicesVault | Select-Object "Name","ResourceGroupName","Location","SubscriptionId" | Export-Csv "C:\report1.csv" -NoTypeInformation -Append 

我得到了完美的输出:

我希望输出看起来与单个订阅和单个资源组的输出相同。

我需要上述输出的帮助,并且我还想要获取订阅名称列。 我试图在上述代码中的 select-object 中传递订阅名称,但它在订阅名称列的行中提供了空白条目。

如果有人可以帮助我,我想提前感谢。

我是 powershell 新手,我一直在努力解决这个问题。

【问题讨论】:

    标签: azure powershell for-loop scripting azure-powershell


    【解决方案1】:

    您在每次硬编码的迭代中使用相同的 SubscriptionId,您应该使用通过 Get-AzSubscription 调用收到的每个 $Subscription 对象的 Id 属性。

    试试

    $subscriptions = Get-AzSubscription
    
    # loop through the subscriptions and collect the output in variable $result
    $result = foreach ($Subscription in $Subscriptions) {
        $null   = Set-AzContext -SubscriptionId $Subscription.Id
        $vaults = Get-AzRecoveryServicesVault
    
        foreach ($vault in $vaults) {
            Set-AzRecoveryServicesVaultContext -Vault $vault
            # output a PSObject with the chosen properties
            Get-AzRecoveryServicesVault | Select-Object "Name","ResourceGroupName","Location","SubscriptionId" 
        }
    } 
    
    $result | Export-Csv "C:\RSV-Report.csv" -NoTypeInformation -Encoding ASCII  
    

    【讨论】:

    • 我试过了,但上面的脚本给出的输出与我上传的没有订阅 ID 的截图相同。感谢您的评论
    • @vishalsingh 请再试一次。有一个错字:SubscritptionId --> SubscriptionId
    • 是的,它成功了,感谢您的帮助,我如何获得订阅名称 coloum ?我试图在 select-object 中添加它给黑色的coloumn,
    • @vishalsingh 您可以在Select-Object 行的属性列表中添加新的calculated property@{Name = 'SubscriptionName'; Expression = {$($Subscription.Name)}}
    • @vishalsingh 顺便说一句,我很高兴听到它对你有用。如果您觉得我的回答解决了您的问题,请点击左侧的复选标记图标 考虑accepting。这将帮助其他有类似问题的人更轻松地找到它。
    猜你喜欢
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2021-08-05
    • 1970-01-01
    相关资源
    最近更新 更多