-3
我想写比较两个不同结构的CSV文件的脚本。我有一个名为cisearch.csv
的文件,第二个文件名为export.csv
。比较CSV与不同的结构
cisearch.csv
:
Name,P1,P2,P3,P4,P5 server1,100,,,, server2,100,100,,, server3,100,,,, server4,100,50,70,80,80
export.csv
:
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:
我知道这对驱动器C:而不是另一个...
$csvI = Import-Csv c:\workspace\cisearch.csv
foreach($line in $csvI){
$hostname = $line.Name
$cDrive = $line.P1
$dDrive = $line.P2
$eDrive = $line.P3
$fDrive = $line.P4
$gDrive = $line.P5
if ($cDrive -gt 0) {
Select-String -pattern "$hostname;Drive C: Disk Usage" C:\workspace\export.csv | out-null
} else {
Write-Host Drive C: on $hostname non exist
}
}
目前尚不清楚对我有什么选择标准是。驱动器的数量(假设第一个CSV中的'P1'到'P5'字段代表驱动器)在两个文件中都是相同的,那么为什么驱动器F:和G:必须列出server4,而其他的不是? –
cisearch.csv是来自CMDB的报告:P1-P5是添加到服务器的分区 - server1只有一个驱动器,server2有两个分区,server3只有一个,server4有5个分区。我需要将它与第二个来自Nagios的报告进行比较,监控什么。我需要找到P1-P5和服务器名称什么是不监控... – g0mez
我认为,我需要:如果dDrive是空白 - 无效值,继续eDrive ...如果dDrive值大于0,请尝试选择字符串... – g0mez