有两个变量$applicants
和$students
。我希望遍历$applicants
,获取Applicant
,Location
的值以及与$students
中该申请人姓名匹配的父级名称。尝试到目前为止,但在最后一步无法得到父母的名字。如何在$student
的for循环中调用$applicants
?
在此示例中,$applicants
包含名称,位置,地址等。
Applicant:John Taylor Location: Newyork Address: 7737 NW Inn Applicant: Mark David Location: Washington Address: 101 S Parkway
$students
(姓名与上述申请人相同):
Name: John Taylor ParentName: Brian Taylor age:7 Name: Mark David ParentName: David Smith age:18
依旧......
脚本:
$students = Get-Object admin
$students
$applicants = Get-Object admin
$applicants
$applicants | Select Applicant,
Location,
@{n='Parent';e={$students[$_.ParentName]}}
输出:
Applicant: John Taylor Location: Newyork Parent:
答案 0 :(得分:0)
$applicants
列表中的对象没有属性ParentName
,因此$_.ParentName
的评估结果为$null
。此外,$students
首先不是哈希表,因此查找$students[...]
无论如何都不会返回任何内容。因此,计算出的属性Parent
仍为空。
你可能想要这样的东西:
$applicants | Select-Object Applicant, Location, @{n='Parent';e={
$name = $_.Applicant;
$students | Where-Object { $_.Name -eq $name } |
Select-Object -Expand ParentName
}}
如果您希望能够使用$students[$_.Applicant]
这样的查找,则需要使用学生姓名作为关键字将学生列表放在哈希表中:
$students_ht = @{}
$tmp | ForEach-Object { $students_ht[$_.Name] = $_ }
$applicants | Select-Object Applicant, Location,
@{n='Parent';e={$students_ht[$_.Applicant].ParentName}}