Azure Powershell-跨EA中的多个订阅

时间:2018-12-03 22:19:02

标签: azure powershell enterprise

在EA中,我可以“向读者收费”访问数百个订阅。

我正在尝试获取所有订阅中虚拟机及其大小的列表。

因此,当前当我运行“ Get-AzureRMSubscription”时,它会向我显示所有订阅(数百个),但是我不确定如何针对所有订阅实际运行脚本吗?

在所有设备上都安装一个“ Get-AzureRMVM”真是太好了

有什么建议吗? 预先感谢!

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

$azureSubs = Get-AzureRMSubscription
$azureSubs | ForEach-Object {Select-AzureRMSubscription $_ | Out-Null; Get-AzureRMVM -WarningAction SilentlyContinue}

本质上,您正在设置一个数组变量来保存您所有的Azure订阅,并将其通过管道传递到ForEach-Object cmdlet以迭代数组中的所有对象。然后,将其通过管道传递到Get-AzureRMVM cmdlet,以列出每个订阅中的所有VM。

这绝对不是针对性能进行优化的,可能会有更好的解决方案,但是至少您可以运行它而忘记它。

使用Out-Null和-WarningAction的原因是抑制不需要的输出。

答案 1 :(得分:1)

您没有要求,但是对于经典资源,我们定期运行以下脚本并将其输出存储在SQL数据库中。

conda install scikit-learn

$subscriptions = Get-AzureSubscription foreach ($sub in $subscriptions) { $sub | Select-AzureSubscription Get-AzureService | % { Get-AzureDeployment -ServiceName $_.ServiceName } | % { New-Object -TypeName 'PSObject' -Property @{ 'ServiceName' = $_.ServiceName; 'Addresses' = $_.VirtualIPs.Address; } } | sort Addresses | ft } %ForEach-Objectft,尽管有些灵魂可能会出现并尝试对其进行编辑并使其更难以重用。您可以在select语句中添加/删除属性,以根据需要定制输出。在一个订阅中尝试一下,以完善您的需求,然后创建一个脚本以使其易于重用。

答案 2 :(得分:1)

我们最近发布了Azure资源图,以支持跨多个订阅的这些类型的搜索。在此处查看文档https://docs.microsoft.com/en-us/azure/governance/resource-graph/overview