工件类型:包含完整Azure环境的Excel电子表格 语言:Powershell 平台:Windows / Linux / Mac 标签:Powershell、Azure、清单、Excel报告、客户工程师
Azure资源清单
Azure资源清单(ARI)是一个强大的PowerShell脚本,可以为您拥有读取权限的任何Azure环境生成Excel报告。
该项目旨在帮助云管理员和任何需要快速简便地构建Azure环境完整Excel报告的人。
有什么新功能?
版本3来了!!
在众多改进中,新版本的亮点包括:
1) 支持6种额外的资源类型,包括NetApp和VMWare解决方案。
从项目开始以来,我们希望ARI能够不断发展并跟上Azure资源的改进步伐。考虑到这一点,我们正在为新资源添加额外的模块。
我们还审查并更新了一些旧资源。
2) 图表已完全重建,现在支持超过30,000个资源的环境
网络拓扑很酷,但在大型环境中存在一些问题(例如:冻结且永不完成),即使完成也可能需要很长时间。
我们为图表添加了并行处理,现在在执行ARI期间,将创建一个额外的文件夹(DiagramCache),该文件夹被图表用来存储图表的临时组件,在所有并行处理完成后,这些文件将合并到主图表中。
现在图表甚至会在Excel文件之前完成。
3) 图表中的网络拓扑现在可以识别Hub和Spoke虚拟网络
在图表中添加了选项卡名称,现在网络拓扑是第一个选项卡。
此外,在网络拓扑中,我们使用图表中的颜色来识别HUB-Spoke拓扑中不同的虚拟网络用途。
颜色还将用于指示损坏的对等连接。
4) 图表现在包括"组织视图"(管理组)
我们在新图表中添加了额外的选项卡,第二个选项卡称为"组织",将展示环境中订阅的层次结构视图。
这个想法是为了使您的环境更容易与Microsoft的登陆区设计保持一致(什么是Azure登陆区)。
5) 图表现在包括环境中每个订阅的资源概览
由于并非每个人都有非常复杂的网络环境,许多人抱怨图表不能真正展示他们的环境。
这种情况现在改变了。每个订阅都将成为图表中的一个选项卡,这些选项卡将包含订阅、资源组以及资源组中每种类型资源的总和。目前,几乎所有可用的draw.io模板类型都将被识别,未来几个月内会有更多内容。
6) 自动化账户中的ARI
一些人要求在Azure自动化账户中运行ARI,由于旧的自动化账户脚本不能工作,我们设法为这个版本修复了它。但现在需要使用Runtime 7.2,并在自动化账户中添加模块:"ImportExcel"、"Az.ResourceGraph"、"Az.Storage"、"Az.Account"和"ThreadJob"。
所需步骤在自动化指南中提供。
1) Excel概览
- 仪表板显示环境中资源的整体视图和摘要。
- 资源表格展示详细信息和建议,以及安全和成本降低提示。
2) Azure图表清单!
默认情况下,每次运行Azure资源清单时都会创建图表。
如果您不希望创建图表,必须使用__-SkipDiagram__参数。
此外,默认情况下,网络拓扑不会考虑未通过对等连接连接的虚拟网络。如果您想在图表中包含这些虚拟网络,必须使用参数__-DiagramFullEnvironment__。
图表:
- 一个额外的细节是,如果您将鼠标光标悬停在网络拓扑中的任何资源上,您会看到资源详情:
- 此功能适用于任何资源,甚至对等连接线:
3) 参数
参数 | 描述 | |
---|---|---|
TenantID | 指定要为其创建资源清单的租户ID | -TenantID <ID> |
AppId | 服务主体身份验证 | -AppId <客户端ID> |
Secret | 服务主体的客户端密钥 | -Secret <客户端密钥> |
SubscriptionID | 指定要清点的订阅 | -SubscriptionID <ID> |
ManagementGroup | 指定要清点的管理组(包括其下所有订阅) | -ManagementGroup <ID> |
Lite | 指定仅使用Import-Excel模块而不创建图表(使用Excel的API) | -Lite |
SecurityCenter | 包括安全中心数据 | -SecurityCenter |
SkipAdvisory | 不收集Azure Advisory | -SkipAdvisory |
IncludeTags | 包括资源标签 | -IncludeTags |
Debug | 以调试模式运行 | -Debug |
DiagramFullEnvironment | 整个环境的网络图 | -DiagramFullEnvironment |
Diagram | 创建Visio图表 | -Diagram |
SkipDiagram | 跳过创建图表 | -SkipDiagram |
DeviceLogin | 使用设备登录方式在Azure上进行身份验证 | -DeviceLogin |
AzureEnvironment | 在Azure环境之间选择 > 已注册的Azure云。使用 az cloud list 获取列表 | -AzureEnvironment <名称> |
ReportName | 更改报告的默认名称。默认名称: AzureResourceInventory | -ReportName <名称> |
ReportDir | 更改报告的默认路径 | -ReportDir "<路径>" |
Online | 使用在线模块。直接在GitHub ARI仓库中扫描模块 | -Online |
ResourceGroup | 指定要清点的单个资源组,此参数需要-SubscriptionID才能工作 | -ResourceGroup <名称> |
TagKey | 指定要清点的标签键,此参数需要-SubscriptionID 才能工作 | -TagKey <名称> |
TagValue | 指定要清点的标签值,此参数需要-SubscriptionID 才能工作 | -TagValue <名称> |
QuotaUsage | 配额使用情况 | -QuotaUsage |
示例
- 对于CloudShell:
/>./AzureResourceInventory.ps1
- Powershell桌面版:
/>./AzureResourceInventory.ps1
如果不指定,资源清单将对所选租户的所有订阅执行。 要在特定租户和订阅中执行清单,请使用
-TenantID
和-SubscriptionID
参数/>./AzureResourceInventory.ps1 -TenantID <Azure租户ID> -SubscriptionID <订阅ID>
- 包括标签:
/>./AzureResourceInventory.ps1 -TenantID <Azure租户ID> --IncludeTags
默认情况下Azure资源清单不包括资源标签。
- 收集安全中心数据:
/>./AzureResourceInventory.ps1 -TenantID <Azure租户ID> -SubscriptionID <订阅ID> -SecurityCenter
默认情况下Azure资源清单不收集安全中心数据。
- 跳过Azure顾问:
/>./AzureResourceInventory.ps1 -TenantID <Azure租户ID> -SubscriptionID <订阅ID> -SkipAdvisory
默认情况下Azure资源清单收集Azure顾问数据。
- 创建网络图:
/>./AzureResourceInventory.ps1 -TenantID <Azure租户ID> -Diagram
入门
这些说明将帮助您在本地机器或CloudShell上运行项目的副本。
支持性
资源提供程序 | 结果 | Draw.io图表 | 评论 |
---|---|---|---|
Windows | 完全成功测试 | 支持 | 最佳结果 |
MAC | 完全成功测试 | 不支持 | |
Linux | 在Ubuntu Desktop上测试 | 不支持 | 列没有自动调整 |
CloudShell | 在Azure CloudShell上测试 | 不支持 | 列没有自动调整 |
我们的测试环境:
工具 | 版本 |
---|---|
Windows | 11 22H2 |
Powershell | 5.1.19041.1237 |
ImportExcel | 7.8 |
azure-cli | 2.48.1 |
AzCLI account | 0.2.3 |
AzCLI resource-graph | 2.1.0 |
先决条件
您可以在Cloudshell和Powershell桌面版中使用Azure资源清单。
运行脚本需要的东西
- 安装模块ImportExcel
- 安装Azure CLI
- 安装Azure CLI Account扩展
- 安装Azure CLI Resource-Graph扩展
默认情况下,Azure资源清单将调用安装所需的Powershell模块和Azure CLI组件,但在脚本执行期间您必须具有管理员权限。
特别感谢__Doug Finke__,Powershell ImportExcel模块的作者。
:warning: 警告
非常重要: Azure资源清单不会升级Powershell模块的当前版本。
重要: 如果您在Azure CloudShell中运行脚本,最终的Excel将没有自动调整列宽,并且在脚本执行期间会看到警告(但您的清单结果不会改变:)
运行脚本
-
使用Azure资源清单非常简单,您只需在PowerShell中调用此脚本即可。
-
运行"AzureResourceInventory.ps1"。在Azure CloudShell中您已经通过身份验证。在PowerShell桌面版中,您将被重定向到Azure登录页面。
- 如果您在多个租户中拥有权限,可以使用"-TenantID"参数指定所需的租户,或者Azure资源清单将扫描所有租户ID并要求您选择一个。
-
在正确验证身份并选择租户后,Azure资源清单将执行提取和创建清单的所有工作。
-
持续时间将根据订阅和资源的数量而变化。在我们的测试中,我们能够在5分钟内生成一个包含15个订阅和约12000个资源的租户的清单。
-
Azure资源清单在Windows的PowerShell桌面版中使用"C:\AzureResourceInventory"作为默认文件夹,在Azure CloudShell中使用"$HOME/AzureResourceInventory"来保存最终的Excel文件。
-
此文件将命名为"AzureResourceInventory_Report_yyyy-MM-dd_HH_mm.xlsx",其中"yyyy-MM-dd_HH_mm"是创建此清单的日期和时间。
版本控制和更新日志
我们使用SemVer进行版本控制。有关可用版本,请参阅此存储库上的标签。
我们还在存储库中保留了CHANGELOG.md
文件,以记录版本更改和更新。
作者
本项目的主要作者是:
- Claudio Merola (claudio.merola@microsoft.com)
- Renato Gregio
贡献
请阅读我们的CONTRIBUTING.md,其中概述了我们所有关于为此项目做出贡献的政策、程序和要求。
关于工具
版权所有 (c) 2018 微软公司。保留所有权利。
本软件按"原样"提供,不提供任何形式的明示或暗示担保,包括但不限于对适销性、特定用途适用性和非侵权性的担保。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为或其他方面,起因于、源于或有关于本软件,或与本软件的使用或其他交易有关。
商标
本项目可能包含项目、产品或服务的商标或标识。微软商标或标识的授权使用必须遵循微软商标和品牌指南。在本项目的修改版本中使用微软商标或标识不得引起混淆或暗示微软赞助。任何第三方商标或标识的使用均受制于这些第三方的政策。