不同结构的CSV比较

不同结构的CSV比较,csv,powershell,compare,Csv,Powershell,Compare,我正在尝试编写用于比较两个具有不同结构的CSV文件的脚本。我有一个文件名为cisearch.csv,第二个文件名为export.csv cisearch.csv: Name,P1,P2,P3,P4,P5 server1,100,,,, server2,100,100,,, server3,100,,,, server4,100,50,70,80,80 Host;Drive server1;Drive C: Disk Usage server2;Drive C: Disk Usage server

我正在尝试编写用于比较两个具有不同结构的CSV文件的脚本。我有一个文件名为
cisearch.csv
,第二个文件名为
export.csv

cisearch.csv

Name,P1,P2,P3,P4,P5 server1,100,,,, server2,100,100,,, server3,100,,,, server4,100,50,70,80,80 Host;Drive server1;Drive C: Disk Usage server2;Drive C: Disk Usage server2;Drive D: Disk Usage server3;Drive C: Disk Usage server4;Drive C: Disk Usage server4;Drive D: Disk Usage server4;Drive E: Disk Usage server4;Drive F: Disk Usage server4;Drive G: Disk Usage 从脚本中,我只需要输出,其中只有
cisearch.csv
上的项,而不是
export.csv
中的项。例如:

server4 Drive F: server4 Drive G: 那么:

function compareE {
    if ($eDrive -gt 0 ) {
        Select-String -pattern "$hostname;Drive E: Disk Usage" C:\workspace\NagiosExport.csv 
    }else{
        Write-Host Drive E: on $hostname not monitored 
    }
}

if($eDrive -gt 0) { 
    compareE 
    }

我不清楚你的选择标准是什么。驱动器的数量(假设第一个CSV中的
P1
P5
字段代表驱动器)在两个文件中是相同的,那么为什么必须列出server4的驱动器F:和G:而其他驱动器不是?cisearch.CSV是来自CMDB的报告:P1-P5是添加到服务器的分区-server1只有一个驱动器,server2有两个分区,server3只有一个,server4有5个分区。我需要把它和Nagios的第二个文件进行比较,这是监控的内容。我需要找到P1-P5和服务器名称中未监视的内容…我想,我需要:如果dDrive为空-无效值,请继续eDrive。。。如果dDrive的值大于0,请尝试选择字符串…请解释(在您的问题中)如何从两个输入文件到概述的输出(否则请更正您的示例)。我完全不清楚你的标准是什么。这如何回答你的问题?如果您需要提供其他信息/澄清:请编辑您的问题。
function compareE {
    if ($eDrive -gt 0 ) {
        Select-String -pattern "$hostname;Drive E: Disk Usage" C:\workspace\NagiosExport.csv 
    }else{
        Write-Host Drive E: on $hostname not monitored 
    }
}

if($eDrive -gt 0) { 
    compareE 
    }