我有两个csv文件,我想检查username.csv中的用户是否与userdata.csv相匹配 到output.csv。如果不匹配,则在output.csv中单独返回名称
对于Ex:用户数据包含3列
UserName,column1,column2
Hari,abc,123
Raj,bca,789
Max,ghi,123
Arul,987,thr
Prasad,bxa,324
username.csv包含用户名
Hari
Rajesh
Output.csv应包含
Hari,abc,123
Rajesh,NA,NA
如何实现这一目标。感谢
很抱歉。
$Path = "C:\PowerShell"
$UserList = Import-Csv -Path "$($path)\UserName.csv"
$UserData = Import-Csv -Path "$($path)\UserData.csv"
foreach ($User in $UserList)
{
ForEach ($Data in $UserData)
{
If($User.Username -eq $Data.UserName)
{
# Process the data
$Data
}
}
}
这只返回匹配的值。我还需要在输出中添加不匹配的值 文件。感谢。
答案 0 :(得分:3)
这样的事情会起作用:
$Path = "C:\PowerShell"
$UserList = Import-Csv -Path "$($path)\UserName.csv"
$UserData = Import-Csv -Path "$($path)\UserData.csv"
$UserOutput = @()
ForEach ($name in $UserList)
{
$userMatch = $UserData | where {$_.UserName -eq $name.usernames}
If($userMatch)
{
# Process the data
$UserOutput += New-Object PsObject -Property @{UserName =$name.usernames;column1 =$userMatch.column1;column2 =$userMatch.column2}
}
else
{
$UserOutput += New-Object PsObject -Property @{UserName =$name.usernames;column1 ="NA";column2 ="NA"}
}
}
$UserOutput | ft
循环遍历用户列表中的每个名称。第9行搜索用户数据CSV以查找匹配的用户名,如果发现它将该用户的用户数据添加到输出中,如果未找到匹配项,则会将用户名添加到输出中,并在两列中包含NA。
必须更改你的userList csv:
usernames
Hari
Rajesh
预期产出:
UserName column1 column2
-------- ------- -------
Hari abc 123
Rajesh NA NA