尝试列出 Azure 虚拟网络并使用 Powershell 导出到 CSV

Trying to list Azure Virtual Network and export to CSV using Powershell

我正在尝试创建一个可以列出所有 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
        
        }
    }
}

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

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

当我们调用 export-csv 命令时,属性 值会使用 ToString() 方法转换为字符串。但是 Get-AzVirtualNetwork 的结果是对象,我们不能直接将值转换为字符串。详情请参考here and here

所以关于这个问题,我建议你用你需要的信息创建一个自定义对象,然后将它保存到 csv 中。

例如


$vents =Get-AzVirtualNetwork| 
  Select-Object  SubscriptionName,ResourceGroupName,Name, @{
   label='AddressSpace'
   expression={$_.AddressSpace.AddressPrefix}}, @{
     label='SubnetName'
     expression={$_.Subnets.Name}
   }, @{
      label='SubnetAddressSpace'
     expression={$_.Subnets.AddressPrefix}
   }
 $vents | convertto-csv

基于 Jim Xu 提供的内容,您不需要为每个 ResourceGroup 设置单独的循环。 Get-AzVirtualNetwork 将为整个订阅 return 所有虚拟网络。此外,您还需要 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
}