我使用PowerShell来拉数据并将其转储到2个不同的csv中。我把这部分修好了。我使用compare-item来比较两个csv中的数据。比较工作得很好,但是它没有提取所有的数据。我不知道这是否与文件或数组有关。
阵列代码
##Compares both CSV files and exports data
##Both files contain the headers but only File1 contains data for all the headers: "Project No.","Project Name","ProjMgr","FirstName","LastName","Status"
$file1 = import-csv -Path "C:scriptfolderprojects.csv"
$file2 = import-csv -Path "C:scriptfolderarchive.csv"
$Results = Compare-Object $file1 $file2 -property 'Project No.' -IncludeEqual
$Array = @()
Foreach($R in $Results)
{
If( $R.sideindicator -eq "==" )
{
$Object = [pscustomobject][ordered] @{
ProjectNumber = $R.'Project No.'
ProjectName = $R.'Project Name'
ProjectManager = $R.ProjMgr
FirstName = $R.FirstName
LastName = $R.LastName
"Compare indicator" = $R.sideindicator
}
$Array += $Object
}
}
$Array
输出:
ProjectNumber : 0049
ProjectName :
ProjectManager :
FirstName :
LastName :
Status :
Compare indicator : ==
ProjectNumber : 0205
ProjectName :
ProjectManager :
FirstName :
LastName :
Status :
Compare indicator : ==
File1例子
"Project No.","Project Name","ProjMgr","FirstName","LastName","Status"
"0001","Project 0001 Name","005","Axl","Rose","D"
"0002","Project 0002 Name","003","Duff","McKagan","D"
"0003","Project 0003 Name","005","Steven","Adler","D"
File2例子
"Project No.","Project Name","ProjMgr","FirstName","LastName","Status"
"0001","Project 0001 Name",,,,
"0069","Project 0069 Name",,,,
"0003","Project 0003 Name",,,,
输出文件示例
"ProjectNumber","ProjectName","ProjectManager","FirstName","LastName","Status"
"0001",,,,,
"0003",,,,,
"00XX",,,,,
"00XX",,,,,
默认情况下,Compare-Object
只输出它所比较的值。
为了将所有输入属性复制到输出,使用-PassThru
参数:
$Results = Compare-Object $file1 $file2 -property 'Project No.' -IncludeEqual -PassThru