使用Compare-Object比较Powershell中的csv文件

时间:2013-09-26 23:08:27

标签: powershell powershell-v2.0 powershell-v3.0

我是PowerShell的新手,我在创建一个比较两个csv文件的脚本时遇到了一些困难。第一个csv中只有一个名为“Database Name”的列。 secound csv有很多列,我只关心其中的两个“Database Name”和“Host Name”。现在,脚本仅比较“数据库名称”列,该列非常有效!并导出到Differences.csv。但是,我还希望在差异文件中看到每个“数据库名称”的相应“主机名”列。

$northdb = Import-Csv -Path ".\northdb.csv" -Header "Database Name" | Sort-object Property "Database Name" -Unique 

$sdb = Import-Csv ".\Current\SQLDatabaseInventory.csv" -Header "hostname",h2,h3,h4,h5,"Database Name"  |Sort-Object -Property "Database Name" -Unique

Compare-Object $northdb $sdb -Property  "Database Name" |  Where-Object{$_.SideIndicator -eq '=>'} | 
Select-Object  "Database Name" | export-csv .\Difference.csv -NoTypeInfo

请协助

1 个答案:

答案 0 :(得分:2)

如果将-PassThru添加到比较对象,则会收到所有对象属性

Compare-Object $northdb $sdb -Property  "Database Name" -PassThru

然后您还可以导出主机名:

Compare-Object $northdb $sdb -Property  "Database Name" -PassThru |  Where-Object{$_.SideIndicator -eq '=>'} | Select-Object  "Database Name", "hostname" | export-csv .\Difference.csv -NoTypeInfo