如何从Azure自动化账户PowerShell Runbook直接上传字符串至存储Blob/文件共享
Azure自动化Runbook直接写入字符串到存储Blob/文件共享
问题描述
我正在开发Azure解决方案,其中一个步骤需使用Azure自动化账户的PowerShell Runbook,更新现有文件内容或创建以短字符串为内容的新文件。目前找到的方案均需先将字符串存储为本地文件,再上传至AzStorage。请问能否直接从该Runbook通过PowerShell将字符串写入Azure存储Blob或文件共享?或有无其他简便方案?
已尝试方法
- 挂载Azure存储文件共享驱动器并在该驱动器存储临时文件(本地可行,但在Azure自动化Runbook中无效)
- 尝试在内存中创建文件后上传至Blob/文件共享,但找到的命令均要求提供源文件路径
解决方案
直接写入Azure存储Blob
无需本地文件,可将字符串转换为内存流,通过Set-AzStorageBlobContent的-InputStream参数直接写入:
# 连接Azure存储账户(需确保Runbook已配置存储账户权限) $storageAccountName = "你的存储账户名" $storageAccountKey = "你的存储账户密钥" $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey # 定义要写入的短字符串 $targetContent = "需要写入Blob的内容" # 将字符串转为UTF-8编码的内存流 $contentStream = [System.IO.MemoryStream]::new([System.Text.Encoding]::UTF8.GetBytes($targetContent)) # 写入或覆盖Blob Set-AzStorageBlobContent -ContainerName "目标容器名" ` -Blob "目标Blob名称.txt" ` -InputStream $contentStream ` -Context $storageContext ` -Force
直接写入Azure存储文件共享
同样使用内存流结合Set-AzStorageFileContent的-InputStream参数实现:
# 连接Azure存储账户 $storageAccountName = "你的存储账户名" $storageAccountKey = "你的存储账户密钥" $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey # 定义要写入的短字符串 $targetContent = "需要写入文件共享的内容" # 将字符串转为UTF-8编码的内存流 $contentStream = [System.IO.MemoryStream]::new([System.Text.Encoding]::UTF8.GetBytes($targetContent)) # 写入或覆盖文件共享中的文件 Set-AzStorageFileContent -ShareName "目标文件共享名" ` -Path "目标文件路径/文件名.txt" ` -InputStream $contentStream ` -Context $storageContext ` -Force
注:若需更新现有文件内容,可先读取原内容拼接后再按上述方法写入;
-Force参数用于覆盖已存在的Blob/文件。
内容的提问来源于stack exchange,提问作者Smigloo
相关产品推荐
相关产品推荐

