我过去曾成功创建哈希表,用于查找CSV中一个ID的完全匹配,当在另一个CSV中查找时,但我想要做的事情必须是非常不一样?我有1个CSV,每个人都获得一个唯一的LoginID,然后是一个PositionID。然后在另一栏中,我有"报告到位置ID"与经理PositionID那里。我想根据他们的PositionID查找经理的LoginID,但尝试了几种不成功的方式。
CSV示例即使我删除空的第一行也无法将Bob的人员ID交叉引用到报告到职位ID标题:
Person ID Position ID Legal First Name Reports To Position ID YQM000051 DIANE YQM000076 S9999991 YQM000052 CHARISSE YQM000076 S9999992 YQM000052 CHARISSE YQM000076 s9999993 YQM000052 CHARISSE YQM000076 s9999994 YQM000076 Bob YQM000071
答案 0 :(得分:1)
如果没有看到任何示例,您的问题很难理解,但我想您可以执行以下操作:
#Imports CSV file as variable
$Csvfile = Import-Csv -Path "C:\SomePath\file.csv" -Delimiter ","
#Change 1513 to the actual managers PositionID
$Csvfile | Where {$_.PositionID-eq "1513"} | Select -ExpandProperty LoginID
为了测试我创建了一个带有一些随机数的快速csv:
loginID PositionID ReportstoPositionid
1111 3654 1513
2222 1513 54123
3333 54123 16543564
4444 156413 156413
5555 16543564 3654
然后我决定1513将成为管理员位置代码,然后运行上面的PowerShell命令以获取loginid。
PS C:\> $Csvfile | Where {$_.PositionID -eq "1513"} | Select -ExpandProperty LoginID
2222
如果您想要这一切没有变量,您可以执行以下操作:
PS C:\> Import-Csv -Path "C:\SomePath\file.csv" -Delimiter "," | Where {$_.PositionID -eq "1513"} | Select -ExpandProperty LoginID
2222
最后,如果要查看csv文件中的完整行,可以删除select语句。例如:
loginID PositionID ReportsPositionid
------- ---------- -----------------
2222 1513 54123
同样,你的问题有点难以理解,但根据我在这里阅读的内容是我想出的。
希望这有帮助!
修改强>
使用示例数据测试后,我相信您可以使用以下内容:
$CSV1 = Import-Csv -Path "C:\Users\Tyler\Desktop\test1.csv" -Delimiter ","
$Manager = $CSV1 | Where {$_.'Position ID' -eq 'YQM000076'} | Select -ExpandProperty "Legal First Name"
Write-Output "The Following Employees Report To $Manager :"
foreach ($Row in $CSV1)
{
if ($Row.'Reports to Position ID' -eq 'YQM000076')
{
Write-Output "$Row"
}
}
输出
The Following Employees Report To Bob :
@{Person ID=; Position ID=YQM000051; Legal First Name=DIANE; Reports To Position ID=YQM000076}
@{Person ID=S9999991; Position ID=YQM000052; Legal First Name=CHARISSE; Reports To Position ID=YQM000076}
@{Person ID=S9999992; Position ID=YQM000052; Legal First Name=CHARISSE; Reports To Position ID=YQM000076}
@{Person ID=S9999993; Position ID=YQM000052; Legal First Name=CHARISSE; Reports To Position ID=YQM000076}