2016-04-26 8 views
0

2つの.csvファイルがあります。Powershell:別のcsvファイルの各行に対してcsvファイルの値を確認します。

例:

1.csv:

Users 
userA 
userB 

2.csv:私は1.csv内の1つの列の値を取り、に対してそれをチェックしたい

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

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 
関連する問題