如何创建managerID查找哈希表

时间:2016-06-15 23:27:12

标签: csv powershell

我过去曾成功创建哈希表,用于查找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

1 个答案:

答案 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}