比较PSCustomObjects的所有属性(Excel工作表数据)

时间:2018-12-10 12:34:53

标签: excel powershell

我正在为PowerShell编写脚本,以从2个单独的Excel工作表中导入数据,比较这些工作表的所有属性,并使用此输出导出新的Excel工作表。 该脚本的目的是将更新的excel工作表与以前的版本进行比较,并找出已更改的内容,已添加的内容,甚至可能删除的内容。

我一直在使用Import-Excel模块来处理第一部分,并使用Compare-Object进行数据比较。 据我所知,Import-Excel将Excel数据导入到System.Object中,这是PSCustomObjects的哈希表。每个PSCustomObject对应于Excel工作表中的一行。

我正在运行以下代码:

$global:InputdataA = Import-Excel -Path $InputA -WorkSheetname $InputSheetA
$global:InputdataB = Import-Excel -Path $InputB -WorkSheetname $InputSheetB
$global:ReferenceObject = $InputdataA
$global:DifferenceObject = $InputdataB

$global:InputdataHeadersA = $InputdataA[0].psobject.properties.name
$global:InputdataHeadersB = $InputdataB[0].psobject.properties.name

$props = $InputdataHeadersA
$props += $InputdataHeadersB
$props = $props | Select -Unique

$compareResult = Compare-Object -ReferenceObject $ReferenceObject -DifferenceObject $DifferenceObject -Property $props -PassThru -CaseSensitive

我正在使用2个excel文件进​​行测试:

Personnel_16_12_2018-small2.xlsx(以前的版本) Personnel_28_11_2018-small2.xlsx(具有更改和添加的新版本)

可以在这里下载文件:

https://ufile.io/bmstu https://ufile.io/3z62x


我希望看到的输出将只是更改/添加的7个条目,以及来自差异对象(excel工作表的新版本)的数据。这将代表最新的“正确”数据。

当前,我从比较对象得到一个输出,其中包含7个条目以及从参考对象(包括侧面指示器)更改的6个条目。

是否可以使比较对象仅返回更改,还是必须随后处理输出?

1 个答案:

答案 0 :(得分:0)

根据您的其他信息和示例文件,您可以尝试执行以下操作:

9:00