如何通过PowerShell在Azure自动化账户中将脚本输出保存至Azure存储账户
在Azure自动化账户中用PowerShell将未标记资源列表保存到存储账户CSV文件
一、前期准备
- 确保Azure自动化账户已创建,且已导入Az.Resources和Az.Storage模块(可从自动化账户的「模块」库中添加)
- 创建目标Azure存储账户及Blob容器(用于存储CSV文件)
- 给自动化账户的系统托管身份分配权限:
- 对目标订阅的读取者权限(用于遍历所有资源)
- 对存储账户的存储Blob数据参与者权限(用于写入Blob文件)
二、编写PowerShell运行书脚本
直接使用以下脚本,替换占位符为你的实际信息:
# 1. 通过自动化账户托管身份连接Azure Connect-AzAccount -Identity # 2. 筛选订阅中所有未标记的资源 $unTaggedResources = Get-AzResource | Where-Object { $_.Tags -eq $null -or $_.Tags.Count -eq 0 } # 3. 整理需要导出的字段(可根据需求调整) $outputData = $unTaggedResources | Select-Object ResourceId, Name, ResourceType, Location # 4. 定义存储账户相关信息 $storageAccountName = "你的存储账户名称" $containerName = "你的Blob容器名称" # 生成带时间戳的文件名,避免覆盖 $blobName = "UntaggedResources_$(Get-Date -Format 'yyyyMMddHHmmss').csv" # 5. 将数据转为CSV并上传到存储Blob $csvContent = $outputData | ConvertTo-Csv -NoTypeInformation $csvBytes = [System.Text.Encoding]::UTF8.GetBytes($csvContent -join "`n") # 获取存储账户上下文 $storageContext = (Get-AzStorageAccount -Name $storageAccountName).Context # 上传CSV内容到Blob Set-AzStorageBlobContent -Context $storageContext -Container $containerName -Blob $blobName -ByteArray $csvBytes -Force
三、自动化账户配置要点
- 在自动化账户的「身份」设置中启用系统分配身份,并完成权限分配(参考前期准备)
- 若脚本执行报错,检查模块版本是否兼容(优先使用最新稳定版Az模块)
- 可给运行书添加计划触发器,定期自动执行(比如每天凌晨生成最新未标记资源列表)
四、验证结果
登录Azure门户,进入目标存储账户的Blob容器,查找以UntaggedResources_开头的CSV文件,下载后即可查看未标记资源的详细列表。
内容的提问来源于stack exchange,提问作者DSH
相关产品推荐
相关产品推荐

