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

PowerShell生成CSV上传Azure Blob存储失败,寻求解决方案

问题解决:PowerShell上传CSV内容到Azure Blob存储失败

核心问题定位

你当前脚本的两个关键错误导致上传失败:

  1. Set-AzStorageBlobContent 命令参数语法错误,误将 -Stream 参数写成了 - $csvStream,命令无法识别流输入
  2. 内存流创建后,指针默认停留在流的末尾位置,直接上传会导致空内容被写入

修正后的完整脚本

生成CSV内容部分(保留原有逻辑)

# 创建用户CSV内容
$csvContent = "redacted`nredacted"

foreach ($output in $outputStrings) {
    $csvContent += "`n$output"
}

上传Blob的修正代码

# 将CSV内容转为字节数组
$csvBytes = [System.Text.Encoding]::UTF8.GetBytes($csvContent)

# 创建内存流并将指针重置到起始位置
$csvStream = New-Object System.IO.MemoryStream(,$csvBytes)
$csvStream.Seek(0, [System.IO.SeekOrigin]::Begin) | Out-Null

# 设置存储账户上下文
$ctx = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

# 不存在则创建容器
$null = New-AzStorageContainer -Name $containerName -Context $ctx -ErrorAction SilentlyContinue

# 上传CSV到Blob存储
$destinationBlobName = "testusers.csv"
Set-AzStorageBlobContent -Container $containerName -Blob $destinationBlobName -Context $ctx -Force -Stream $csvStream

额外优化方案

  • 拼接大量字符串时,使用StringBuilder比直接+=更高效:
$csvBuilder = New-Object System.Text.StringBuilder
[void]$csvBuilder.AppendLine("redacted")
[void]$csvBuilder.AppendLine("redacted")
foreach ($output in $outputStrings) {
    [void]$csvBuilder.AppendLine($output)
}
$csvContent = $csvBuilder.ToString()
  • 可直接使用-Content参数简化流程,无需手动处理流:
Set-AzStorageBlobContent -Container $containerName -Blob $destinationBlobName -Context $ctx -Force -Content $csvContent

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:15:26