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

Azure Function中PowerShell将PSCustomObject数组转为CSV的问题

解决PowerShell数组转CSV时返回元数据的问题

问题出在ConvertTo-Csv的-InputObject参数处理逻辑上:当你直接传入整个System.Array对象时,它会把数组本身当作单个对象来序列化,输出的自然是数组的元数据(比如Length、LongLength这些属性),而不是数组里每个PSCustomObject的内容。

两种解决方法:

  • 优先用管道传递数组:PowerShell管道会自动枚举数组中的每个元素,ConvertTo-Csv会逐个处理每个PSCustomObject,生成符合预期的CSV格式:

    $csvContent = $new_users | ConvertTo-Csv -NoTypeInformation
    
  • 若必须用-InputObject:需要手动展开数组,确保参数接收的是数组中的元素而非整个数组对象(这种方式不如管道直观,不推荐):

    $csvContent = ConvertTo-Csv -InputObject $new_users[0..($new_users.Count-1)] -NoTypeInformation
    

Azure Function完整示例代码

using namespace System.Net

param($Request, $TriggerMetadata)

# 读取输入Blob的CSV内容
$inputCsv = Get-Content -Path $TriggerMetadata.InputBlobPath -Raw | ConvertFrom-Csv

# 处理数据生成PSCustomObject数组(示例逻辑,根据你的需求修改)
$new_users = $inputCsv | ForEach-Object {
    [PSCustomObject]@{
        # 保持与输入CSV一致的列名和格式
        Username = $_.Username
        FullName = $_.FullName
        Department = $_.Department
        # 这里可以添加你的处理逻辑,比如新增字段或修改值
        ProcessedDate = Get-Date -Format "yyyy-MM-dd"
    }
}

# 正确转换为CSV
$outputCsv = $new_users | ConvertTo-Csv -NoTypeInformation

# 写入输出Blob容器
$outputPath = "output.csv"
Set-Content -Path $outputPath -Value $outputCsv -Encoding UTF8

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = "处理完成,结果已写入output.csv"
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:11:12