比较两个使用PowerShell的csv



我使用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

最新更新