2016-04-26 52 views
0

我有2个.csv文件。Powershell:检查csv文件的值针对另一个csv文件中的每一行

例子:

1.csv:

Users 
userA 
userB 

2.csv:

groupid,user,random 
1,userA,randomtext1 
2,userA,randomtest2 
3,userA,randomtext3 
3,userB,randomtext1 
5,userB,randomtext2 
6,userB,randomtext2 

我想在1.csv一列的值,并检查它反对2.csv中的一列。

基本上什么输出,我想的是:

UserA is a member of 1 
UserA is a member of 2 
UserA is a member of 3 
UserB is a member of 3 
UserB is a member of 4 
UserB is a member of 5 
UserB is a member of 6 

我知道我可以使用Import-Csv但我就是无法回避如何做到这一点?

我试图把1.csv放入一个数组中,但是如何才能在2.csv中检查每一行的数组来检查用户是否在给定的行上,然后接受groupip?

$user = @() 
$users = Import-Csv 1.csv | Foreach {$user += $_.Users} 

我已经尝试了很多不同的东西,我不能得到它的工作。

任何提示赞赏。

/拉斯穆斯

回答

1

了解你感兴趣的到一个数组的用户名,使用Where-Object,以在符合这些用户名的行过滤:

# Read user names into string array 
$TargetUsers = Import-Csv .\1.csv |Select-Object -ExpandProperty Users 

# Now import and filter the CSV with the relationships 
Import-Csv .\2.csv |Where-Object {$TargetUsers -contain $_.user} |ForEach-Object { 
    # Output the string with the information you need 
    "$($_.user) is a member of $($_.groupid)" 
} |Out-File .\output.txt 
相关问题