Select 数组中数组的特定值
Select specific values from an array within an array
我正在查询我的存储阵列以收集启动器的属性。这是代码:
$global:Xtrem_HBA_list = @()
$global:Xtrem_HBA_list += Get-XtremInitiators -Properties name,port-address,ig-id
$Write-Host $global:Xtrem_HBA_list
这个returns
name port-address ig-id
---- ------------ -----
comp-esxi-01_vmhba2 10:00:00:90:fa:53:f4:60 {c832425d03f84644be37ae3d4e49186c, comp-esxi-01, 1}
comp-esxi-01_vmhba3 10:00:00:90:fa:53:f4:61 {c832425d03f84644be37ae3d4e49186c, comp-esxi-01, 2}
我的问题是我需要 $global:Xtrem_HBA_list 来包含来自名称、端口地址的值和来自 ig-id (comp-esxi-01) 的第二个值。我很难从数组中的数组中提取值。
感谢马特!我更新了我的代码并获得了我正在寻找的准确输出。
$global:Xtrem_HBA_list = @()
$global:arr_HBAs = @()
$global:Xtrem_HBA_list += (Get-XtremInitiators).name
foreach ($i in $global:Xtrem_HBA_list){
$global:arr_HBAs += Get-XtremInitiator -InitiatorName $i | Select name,port-address,@{Name="ig-id";Expression={($_."ig-id")[1]}}
}
几个基本的方法来获得它。
- 每次通过都从数组中提取值的循环。
- 一个循环,它使用
Add-Member
创建另一个 属性 'extracts' 信息并使用 Select
提取该列。
- 使用 calculated property 将输出
ig-id
列,但仅包含数组中的第二个值。这个也更容易,因为它会让我们使用相同的名称。
我选择后一个建议。我在这里不是故意使用 write-host
的,因为默认情况下它只会转到输出流,而 write-host
只会转到控制台
$global:Xtrem_HBA_list | Select name,port-address,@{Name="ig-id";Expression={($_."ig-id")[1]}}
请注意,如果元素少于两个,将返回 null。在相同的情况下,它可能会根据您的严格模式生成错误。您的里程数会有所不同,但如果需要,您可以使用一些 if 语句轻松强化它。
我正在查询我的存储阵列以收集启动器的属性。这是代码:
$global:Xtrem_HBA_list = @()
$global:Xtrem_HBA_list += Get-XtremInitiators -Properties name,port-address,ig-id
$Write-Host $global:Xtrem_HBA_list
这个returns
name port-address ig-id
---- ------------ -----
comp-esxi-01_vmhba2 10:00:00:90:fa:53:f4:60 {c832425d03f84644be37ae3d4e49186c, comp-esxi-01, 1}
comp-esxi-01_vmhba3 10:00:00:90:fa:53:f4:61 {c832425d03f84644be37ae3d4e49186c, comp-esxi-01, 2}
我的问题是我需要 $global:Xtrem_HBA_list 来包含来自名称、端口地址的值和来自 ig-id (comp-esxi-01) 的第二个值。我很难从数组中的数组中提取值。
感谢马特!我更新了我的代码并获得了我正在寻找的准确输出。
$global:Xtrem_HBA_list = @()
$global:arr_HBAs = @()
$global:Xtrem_HBA_list += (Get-XtremInitiators).name
foreach ($i in $global:Xtrem_HBA_list){
$global:arr_HBAs += Get-XtremInitiator -InitiatorName $i | Select name,port-address,@{Name="ig-id";Expression={($_."ig-id")[1]}}
}
几个基本的方法来获得它。
- 每次通过都从数组中提取值的循环。
- 一个循环,它使用
Add-Member
创建另一个 属性 'extracts' 信息并使用Select
提取该列。 - 使用 calculated property 将输出
ig-id
列,但仅包含数组中的第二个值。这个也更容易,因为它会让我们使用相同的名称。
我选择后一个建议。我在这里不是故意使用 write-host
的,因为默认情况下它只会转到输出流,而 write-host
只会转到控制台
$global:Xtrem_HBA_list | Select name,port-address,@{Name="ig-id";Expression={($_."ig-id")[1]}}
请注意,如果元素少于两个,将返回 null。在相同的情况下,它可能会根据您的严格模式生成错误。您的里程数会有所不同,但如果需要,您可以使用一些 if 语句轻松强化它。