You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么PSCustomObject配合Export-Csv使用时仅导出最后一个对象?

问题根因

你当前代码的核心问题是$outputForCsv变量初始化错误,你将其初始化为了空字符串而非对象数组,导致后续的+=操作执行的是字符串拼接逻辑,而非向集合中追加自定义对象,最终传入Export-CSV的不是符合要求的结构化对象集合,因此只能导出异常的最后一条结果。


修正方案

  1. 修正变量初始化:将$outputForCsv = ""替换为$outputForCsv = @(),@()是PowerShell中声明空数组的语法,后续+=操作就会往数组中追加PSCustomObject对象
  2. (可选优化)你已经通过Get-AzWebApp -ResourceGroupName $rgName获取了当前资源组下所有WebApp的完整配置,不需要在嵌套循环中再次调用Get-AzWebApp查询单个站点配置,可减少API请求提高执行效率

修正后完整代码

# 初始化为空数组而非空字符串
$outputForCsv = @()
foreach ($rg in $resourceGroups) {
    $rgName = $rg.ResourceGroupName
    $webAppsInRg = Get-AzWebApp -ResourceGroupName $rgName

    foreach($webApp in $webAppsInRg){
        $tls = $webApp.SiteConfig.MinTlsVersion
        $http20Enabled = $webApp.SiteConfig.Http20Enabled
 
        $outputForCsv += [PSCustomObject]@{
            ResourceGroup = $rgName
            WebAppName = $webApp.Name
            MinTlsVersion = $tls
            Http20Enabled = $http20Enabled
        }
    }
}

$outputForCsv | Export-Csv "data.csv" -Delimiter ";" -NoTypeInformation

逻辑说明

修正后$outputForCsv是PSCustomObject的数组,Export-CSV会自动遍历数组中每一个对象,将对象的属性作为CSV的列、属性值作为行内容导出,即可得到所有WebApp的配置信息。

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 00:45:04