尝试列出资源组和位置
Trying to list the resource groups and locations
我正在尝试仅根据 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
它returns下面格式的结果
Name Location
---- --------
AZRWUSRG1 westus
{NWRG, AZREUS####, AZREU###, AZREUSLSSTO###} {eastus, eastus, eastus, eastus…}
但我想要这种格式
Name Location
---- --------
AZRWUSRG1 westus
NWRG eastus
AZREUS#### eastus
AZREUSLSSTO### eastus
我怎样才能做到这一点?谁能帮帮忙
Get-AzResourceGroup
可以 return 类型为 PSResourceGroup
的多个对象。在这种情况下 $ResourceGroup
将是一个数组。
$Name=$ResourceGroup.ResourceGroupName
以上代码让 PowerShell 通过从数组 $ResourceGroup
的所有元素中收集 属性 ResourceGroupName
的值来创建一个数组。这就是为什么你得到像 {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
编辑的每个 PSResourceGroup
元素创建一个新对象,仅包含给定的属性。
由于我们已经将foreach
的输出赋值给了一个变量,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
它returns下面格式的结果
Name Location
---- --------
AZRWUSRG1 westus
{NWRG, AZREUS####, AZREU###, AZREUSLSSTO###} {eastus, eastus, eastus, eastus…}
但我想要这种格式
Name Location
---- --------
AZRWUSRG1 westus
NWRG eastus
AZREUS#### eastus
AZREUSLSSTO### eastus
我怎样才能做到这一点?谁能帮帮忙
Get-AzResourceGroup
可以 return 类型为 PSResourceGroup
的多个对象。在这种情况下 $ResourceGroup
将是一个数组。
$Name=$ResourceGroup.ResourceGroupName
以上代码让 PowerShell 通过从数组 $ResourceGroup
的所有元素中收集 属性 ResourceGroupName
的值来创建一个数组。这就是为什么你得到像 {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
编辑的每个 PSResourceGroup
元素创建一个新对象,仅包含给定的属性。
由于我们已经将foreach
的输出赋值给了一个变量,PowerShell会自动将循环体的所有输出都捕获到变量中,当元素多于一个时,它就是一个数组。