azure - 尝试使用 Powershell 列出 Azure 虚拟网络并导出为 CSV

标签 azure powershell azure-virtual-network subnet

我正在尝试创建一个脚本,该脚本可以列出所有 Azure 虚拟网络并使用 Powershell 将其导出到 Csv。

$day = Get-Date -Format " MMM-yyyy"
$path = "C:\Users\admin-vishal.singh\Desktop\Test\Report\"+ "$day-Vnet-Report.csv"
foreach ($Sub in $Subs) { 
    Select-AzSubscription -SubscriptionName $Sub.Name | Out-Null
    $resource_grps = Get-AzResourceGroup

    foreach ($resource_grp in $resource_grps) {

        $networks = Get-AzVirtualNetwork 
        foreach ($vnet in $networks)
        {
        $null = Get-AzVirtualNetwork |Select-Object SubscriptionName,ResourceGroupName,Name,AddressSpace,Subnets,SubnetAddressSpace,RouteTable | Export-CSV -Path $path -NoTypeInformation -Encoding ASCII  -Append
        
        }
    }
}

我无法以正确的格式检索数据,并且在检索数据时出现错误。 以下是数据片段 enter image description here

很多值我无法检索,例如子网地址空间、路由表和路由。

最佳答案

基于 Jim Xu 提供的内容,您不需要为每个资源组设置单独的循环。 Get-AzVirtualNetwork 将返回整个订阅的所有虚拟网络。此外,您还需要 Select-Object 中的 SubscriptionName 表达式,因此代码如下所示:

foreach ($Sub in $Subs) { 
    Select-AzSubscription -SubscriptionName $Sub.Name | Out-Null
    Get-AzVirtualNetwork | 
        Select-Object  `
            @{label='SubscriptionName'; expression={$Sub.Name}}, `
            ResourceGroupName, `
            Name, `
            @{label='AddressSpace'; expression={$_.AddressSpace.AddressPrefixes}}, `
            @{label='SubnetName'; expression={$_.Subnets.Name}}, `
            @{label='SubnetAddressSpace'; expression={$_.Subnets.AddressPrefix}} |
        Export-CSV -Path $path -NoTypeInformation -Encoding ASCII  -Append
}

关于azure - 尝试使用 Powershell 列出 Azure 虚拟网络并导出为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67179808/

相关文章:

azure - 在Azure文件存储中存储文件创建日期

Azure数据工厂: Storage event trigger only on new files

svn - 使用 powershell 从命令行输出中提取特定值

azure - Azure 发布使用哪些端口

azure - 如何检查我的 azure 网站实例计数是否被利用?

powershell - 比较两个不同的CSV文件并发送电子邮件

powershell - 如何在 PowerShell 中按列排序?

同一角色的实例之间的 Azure 网络通信

azure - 如何在azure VM上公开HTTP端口

通过专用链接的 Azure 应用服务到应用服务通信