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

PowerShell对象数据写入Azure Blob时CSV无换行问题求助

PowerBI活动日志转CSV上传Blob后记录同行问题解决

问题原因

ConvertTo-Csv返回的是字符串数组,每个元素对应CSV的一行。直接将该数组传入[System.Text.Encoding]::UTF8.GetBytes()时,PowerShell会隐式把数组转换为单个字符串,元素之间默认用空格拼接,最终导致所有记录挤在同一行。

解决方法

需要先把CSV行数组用换行符拼接成完整的CSV格式字符串,再转换为字节数组上传。修改代码中生成内容的部分即可:

修正后的完整代码

# Get PowerBI metrics
$Result = Get-PowerBIActivityEvent -StartDateTime 2023-03-13T23:58:59 -EndDateTime 2023-03-13T23:59:59
$Result = ($Result | ConvertFrom-Json) | Select-Object * 
$Result = $Result | ConvertTo-Csv -NoTypeInformation

Connect-AzAccount -ServicePrincipal -TenantId $TenantId -Credential $Credential

# Create a context object using Azure AD credentials
$ctx = New-AzStorageContext -StorageAccountName $accountName -UseConnectedAccount
$container = Get-AzStorageContainer -Name $containerName -Context $ctx
$date_loaded = (Get-Date -Format "MMddyyyy").ToString()

# 关键修改:将CSV行数组用换行符拼接为完整字符串
$csvFullContent = $Result -join "`r`n"
$content = [System.Text.Encoding]::UTF8.GetBytes($csvFullContent) 

$container.CloudBlobContainer.GetBlockBlobReference($date_loaded + ".csv").UploadFromByteArray($content, 0, $content.Length)

关键修改说明

  • 用-join "rn"将数组中的每一行CSV内容拼接成带Windows标准换行符的完整字符串(如果需要适配Unix环境,可改用-join "n"`)
  • 再将拼接后的完整字符串转换为字节数组,上传后就能保持每行一条记录的CSV格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:35:13