每次循环执行时,文件都将替换为第一个文件。我想将其作为新文件上传,而不会分发现有文件。
foreach ($blob in $blobs)
{
$file=New-TemporaryFile
$file=Get-AzureStorageBlobContent -Container $container_name -Blob $blob.Name -Context $ctx -Destination $localFile -Force
$contents = Get-Content $localFile -Raw -ErrorAction:SilentlyContinue
$f=New-TemporaryFile
Add-Content $f $contents
$Header = @{
"Content-Disposition"="attachment;filename=$($blob.Name)"
"Authorization"=$accessToken
}
Invoke-RestMethod -Uri $apiUrl -Headers $Header -Method put -InFile $f
}
我认为你在代码中使用New-TemporaryFile
命令来完成它。为什么使用Get-AzureStorageBlobContent
将blob内容存储在文件中,然后创建另一个临时文件以将内容复制到?
这会简单得多:
foreach ($blob in $blobs) {
$localFile = New-TemporaryFile
Get-AzureStorageBlobContent -Container $container_name -Blob $blob.Name -Context $ctx -Destination $localFile.FullName -Force
$Header = @{
"Content-Disposition"="attachment;filename=$($blob.Name)"
"Authorization"=$accessToken
}
Invoke-RestMethod -Uri $apiUrl -Headers $Header -Method put -InFile $localFile.FullName
}
编辑
New-TemporaryFile
命令返回一个System.IO.FileInfo
对象,您不能直接将其用作InFile
参数。相反,它需要一个完整的路径和文件名,所以我们使用$localFile.FullName