powershell - 尝试列出资源组和位置
问题描述
我正在尝试仅基于 vnet 位置中可用的位置列出 Azure 资源组。这是我的代码。
$AllVnet=Get-AzVirtualNetwork
$SelectVnet=$AllVnet | Select-Object -Property Name,ResourceGroupName,Location
$vnetloc=$SelectVnet.Location
$ResourceGroupList=@()
foreach($loc in $vnetloc)
{
$ResourceGroup=Get-AzResourceGroup -Location $loc
$Name=$ResourceGroup.ResourceGroupName
$Loc=$ResourceGroup.Location
$VMObject = New-Object PSObject
$VMObject | Add-Member -MemberType NoteProperty -Name "Name" -Value $Name
$VMObject | Add-Member -MemberType NoteProperty -Name "Location" -Value $Loc
$ResourceGroupList += $VMObject
}
$ResourceGroupList
它以以下格式返回结果
Name Location
---- --------
AZRWUSRG1 westus
{NWRG, AZREUS####, AZREU###, AZREUSLSSTO###} {eastus, eastus, eastus, eastus…}
但我想要这种格式
Name Location
---- --------
AZRWUSRG1 westus
NWRG eastus
AZREUS#### eastus
AZREUSLSSTO### eastus
我怎样才能做到这一点?任何人都可以请帮忙。
解决方案
Get-AzResourceGroup
可以返回多个类型的对象PSResourceGroup
。在这种情况下$ResourceGroup
将是一个数组。
$Name=$ResourceGroup.ResourceGroupName
ResourceGroupName
上面的代码让 PowerShell 通过从数组的所有元素中收集属性值来创建一个数组$ResourceGroup
。这就是为什么你得到像{NWRG, AZREUS####, AZREU###, AZREUSLSSTO###}
.
代码可以像这样固定并大大简化:
$AllVnet=Get-AzVirtualNetwork
$SelectVnet=$AllVnet | Select-Object -Property Name,ResourceGroupName,Location
$vnetloc=$SelectVnet.Location
$ResourceGroupList = foreach($loc in $vnetloc)
{
Get-AzResourceGroup -Location $loc | Select-Object Name, Location
}
使用Select-Object
我们为从返回的每个PSResourceGroup
元素创建一个新对象Get-AzResourceGroup
,仅包含给定的属性。
由于我们已将foreach
输出分配给一个变量,PowerShell 会自动捕获变量中循环体的所有输出,当有多个元素时,它将是一个数组。
推荐阅读
- java - 需要帮助了解 NullPointerException
- sql - 针对 Excel 工作表的 SQL 查询不起作用
- python - Pandas - H:M:S 字符串格式的数学运算
- javascript - Websocket php SSL连接Apache2 2.4
- sql - 前一个(未知)日期的 SQL 值
- c++ - 无法使用 glibc-2.17 在 CentOS 7 上运行 uWebSockets
- oracle12c - ORA-01017: 无效的用户名/密码;可插入数据库上的登录被拒绝
- python - 如何将 Pandas 条件格式导出到 Excel 文件
- python - 如何将tickercode添加到每个日期
- android - 权限关闭和活动重新创建后没有更新视图