在EA中,我可以“向读者收费”访问数百个订阅。
我正在尝试获取所有订阅中虚拟机及其大小的列表。
因此,当前当我运行“ Get-AzureRMSubscription”时,它会向我显示所有订阅(数百个),但是我不确定如何针对所有订阅实际运行脚本吗?
在所有设备上都安装一个“ Get-AzureRMVM”真是太好了
有什么建议吗? 预先感谢!
答案 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-Object
是ft
,尽管有些灵魂可能会出现并尝试对其进行编辑并使其更难以重用。您可以在select语句中添加/删除属性,以根据需要定制输出。在一个订阅中尝试一下,以完善您的需求,然后创建一个脚本以使其易于重用。
答案 2 :(得分:1)
我们最近发布了Azure资源图,以支持跨多个订阅的这些类型的搜索。在此处查看文档https://docs.microsoft.com/en-us/azure/governance/resource-graph/overview