如何使用Windows PowerShell ISE将PowerShell JSON结果存入Azure存储账号
操作步骤
1. 前置准备(首次操作需执行)
- 打开Windows PowerShell ISE,安装Az.Storage模块:
Install-Module -Name Az.Storage -Force -AllowClobber - 登录Azure账号并切换到目标订阅:
# 登录Azure Connect-AzAccount # 切换到存储账号所在的订阅,替换括号内内容 Set-AzContext -Subscription "你的订阅ID/订阅名称"
2. 转换输出结果为JSON格式
将你已生成的$result对象转换为JSON字符串,避免层级截断可调整Depth参数值:$jsonContent = $result | ConvertTo-Json -Depth 10
注意:Depth参数根据你的$result对象层级灵活调整,默认值为2,层级超过会被自动截断
3. 上传JSON内容到Azure存储
方案1:上传到Blob存储(最常用场景)
- 先定义存储相关变量,替换为你自己的资源信息:
$storageAccountName = "存储账号名称" $resourceGroupName = "存储账号所属资源组名称" $containerName = "目标Blob容器名称" $blobName = "最终保存的文件名,例如:20240520_output.json"
- 获取存储账号上下文:
$storageContext = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName).Context - 直接上传JSON内容到Blob:
Set-AzStorageBlobContent -Context $storageContext -Container $containerName -Blob $blobName -Value ([System.Text.Encoding]::UTF8.GetBytes($jsonContent)) -Force
备选操作:如果需要先在本地保存JSON文件再上传,可执行以下命令:
# 本地保存JSON文件 $jsonContent | Out-File -FilePath "C:\临时目录路径\output.json" -Encoding UTF8 # 上传本地文件到Blob Set-AzStorageBlobContent -Context $storageContext -Container $containerName -File "C:\临时目录路径\output.json" -Blob $blobName -Force
方案2:上传到Azure文件共享
如果需要存到文件共享,替换对应变量后执行以下命令即可:
$fileShareName = "目标文件共享名称" $directoryName = "文件共享内的目标目录,根目录可留空" $fileName = "保存的文件名.json" # 获取存储上下文步骤和方案1一致 Set-AzStorageFileContent -Context $storageContext -ShareName $fileShareName -Path $directoryName -Source ([System.Text.Encoding]::UTF8.GetBytes($jsonContent)) -FileName $fileName -Force
注意事项
- 操作前确认登录的Azure账号对目标存储账号有存储Blob数据贡献者或对应写入权限,避免权限报错
- 如JSON包含中文内容,必须指定UTF-8编码,避免上传后出现乱码
- 如PowerShell ISE提示脚本无法运行,可先执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser调整当前用户的执行策略
内容的提问来源于stack exchange,提问作者Reni
相关产品推荐
相关产品推荐

