我有两个CSV文件。一个是“termlist”,它每天都在变化。它有多个标题,可能有也可能没有任何信息,但也包括电子邮件地址。另一个CSV是“webccmaster”。这有两列:电子邮件地址和来自的webcc。我将电子邮件地址与termlist的电子邮件地址进行比较。我希望输出也显示webcc列,但我想我错过了一些东西。我的代码如下:
if (Test-Path C:\Scripts\termlist.csv)
{
$termlist = import-csv "c:\scripts\termlist.csv" -header("User Name", "Brazil_inst", "Emp Num", "Emp Name", "Email Address", "Term Dt", "Plant", "Deptt", "Location",
"Region", "Job Name", "Sup. Name", "Phone Number") | where-Object {$_."Email Address" -ne ''} | sort "Email Address"
if (Test-Path C:\Scripts\masterwebcc.csv)
{
$webcclist = import-csv "c:\scripts\masterwebcc.csv" | sort "Email Address" -unique
Compare-Object $termlist $webcclist -property "Email Address" -IncludeEqual
Remove-Item "c:\scripts\termlist.csv"
get-childitem C:\Users\josh\Downloads -include Consolidated*.xls -recurse | foreach ($_) {remove-item $_.fullname}
} else {Write-warning "C:\Scripts\masterwebcc does not exist"}
} else { Write-warning "C:\Scripts\termlist does not exist"}
Read-Host -Prompt“按Enter退出”
我知道我会想摆脱这种唯一的约束,但是为了简单起见就在那里,因为我无法显示“webcc”列。我也想知道是否有办法只显示它在两个CSV中找到相同的项目。感谢您提供给我的任何帮助或提示。
答案 0 :(得分:0)
在电子邮件上加入表格,对吧?
TableA.csv:
mail@mail.net|SomethingAboutSite
TableB.csv:
mail@mail.net|Data1|Data2|Data3
像这样的代码
$EmailToSiteAssignment = @{}
Import-CSV -Path 'TableA.csv' -Header @('email','site') | ForEach-Object {$EmailToSiteAssignment[$_.email.Trim().toLower()]=$_.site}
$Result = @();
Import-CSV -Path 'TableB.csv' -Header @('email','data1','data2','data3') | ForEach-Object {$Result += @( $_ | Add-Member -MemberType NoteProperty -Name 'site' -Value $EmailToSiteAssignment[$_.email.Trim().ToLower()] ) }