我有一个 azure 订阅,我正在尝试编写一个 powershell 脚本来自动获取我目前在订阅中拥有的所有资源(VM、存储帐户、数据库等)的列表。有没有办法使用天蓝色管理 REST API 或 Azure Cmdlet 来做到这一点?
7 回答
如果您使用的是新的资源管理器模型(2014 年推出),您可以使用以下 PowerShell 脚本。
Login-AzureRmAccount
Get-AzureRmResource | Export-Csv "c:\Azure Resources.csv"
要使用资源管理器 PowerShell 命令,您需要 AzureRM PowerShell 模块 ( https://docs.microsoft.com/en-us/powershell/azure/install-azurerm-ps )。
Install-Module AzureRM
有关资源管理器和经典模型之间差异的更多信息,请参阅https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-deployment-model。
对于有多个订阅的用户:如果要输出多个订阅的内容,则需要在调用 Get-AzureRmResource 之前调用 Select-AzureRmSubscription 切换到另一个订阅。
我不认为只有一个函数(或 PS Cmdlet)可以获取所有这些信息。但是,这些中的每一个都可以通过 和Windows Azure Service Management REST API
获取Window Azure PowerShell Cmdlets
。
Windows Azure 服务管理 REST API:http: //msdn.microsoft.com/en-us/library/windowsazure/ee460799.aspx。例如,如果您想在订阅中列出存储帐户,您可以使用:http: //msdn.microsoft.com/en-us/library/windowsazure/ee460787.aspx
Windows Azure PowerShell Cmdlets :http : //msdn.microsoft.com/en-us/library/jj554330.aspx。同样,如果您想在订阅中列出存储帐户,您可以使用:http: //msdn.microsoft.com/en-us/library/dn205168.aspx。
好吧,您可以更新 AzurePowershell 的版本并执行此命令。
Get-AzureResource
在输出中,您可以检查“ResourceType”。它包含有关在 azure 上创建的资源类型的信息。
添加到@Gaurav 的答案(并与您对 SQL 数据库枚举的评论相关):您可以通过几个简单的步骤在每个服务器的基础上枚举所有数据库。
首先,枚举订阅中的所有 SQL 数据库服务器:
然后,为每个服务器创建一个连接上下文并枚举数据库。请注意,使用 Get-Credentials cmdlet,系统会提示我通过弹出窗口输入用户名 + 密码,此处未显示。出于演示目的,我创建了一个全新的服务器,只有一个主数据库,以显示输出的样子:
既然你说 PowerShell “最好”,我会假设其他选项可能仍然有用吗?您可以访问http://portal.azure.com,然后单击菜单图标(三个水平线),然后单击所有资源。然后在页面顶部,您可以单击导出到 CSV 并在 Excel 中打开它。
你必须花 30 秒在 Excel 中进行一些清理,但对于我现在正在尝试做的事情,这绝对是最好和最快的解决方案。我希望它对您(或其他人)也有用。
我知道它已经得到了回答,但是我发现 Get-AzResource 命令易于使用,并且可以从特定订阅中获取所有资源。尝试将它与“ft”一起使用以获得干净的文本
获取 AzResource | 英尺
此示例演示如何通过证书身份验证通过 Powershell 自动获取所有资源(VM、存储帐户、数据库、应用服务)和状态的列表。
https://gallery.technet.microsoft.com/Access-Azure-resource-data-ca9cc9f7