我正在编写一个 PowerShell 脚本来列出 Azure 订阅中的资源组。
Get-AzureRmSubscription |
select -ExpandProperty name |
% {
Get-AzureRmResourceGroup | select -ExpandProperty resourcegroupname
}
Run Code Online (Sandbox Code Playgroud)
此代码有效。它返回这样的结果。
Resource group 1
Resource group 2
Resource group 3
Run Code Online (Sandbox Code Playgroud)
如何调整代码以获得如下所示的输出?
Subscription 1,Resource group 1
Subscription 1,Resource group 2
Subscription 2,Resource group 3
Run Code Online (Sandbox Code Playgroud)
非常感谢。
笔记:
此答案使用过时模块中的 cmdlet AzureRM
,该模块已被跨平台Az
模块取代 - 请参阅此公告。
RoadRunner 的答案有一个使用该模块的更新解决方案Az
。
Get-AzureRmSubscription |
% {
$subscrName = $_.Name
Select-AzureSubscription -Current -SubscriptionName $name
(Get-AzureRmResourceGroup).resourcegroupname | % {
[pscustomobject] @{
Subscription = $subscrName
ResourceGroup = $_
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:以上内容更改了会话的当前订阅。在您的实际代码中,您可能希望之后恢复之前的当前代码。
以上输出具有.Subscription
和.ResourceGroup
属性的自定义对象;如果你真的只想输出字符串,请使用:
"$name,$_"
添加到@mklement 的好答案中,以下是您将如何使用最新的Azure PowerShell Az 模块而不是 AzureRM:
Get-AzSubscription | ForEach-Object {
$subscriptionName = $_.Name
Set-AzContext -SubscriptionId $_.SubscriptionId
(Get-AzResourceGroup).ResourceGroupName | ForEach-Object {
[PSCustomObject] @{
Subscription = $subscriptionName
ResourceGroup = $_
}
}
}
Run Code Online (Sandbox Code Playgroud)
要更改为活动订阅,我们可以使用 更改上下文Set-AzContext
,并传递SubscriptionId
From Get-AzSubscription
。还应该能够通过使用Set-AzContext -Subscription $subscriptionName
.
如果要使用 Az 模块运行 AzureRM 命令,可以运行Enable-AzureRmAlias
,这允许您将 AzureRM 前缀与 Az 模块一起使用。
归档时间: |
|
查看次数: |
3318 次 |
最近记录: |