2016-01-20 40 views
-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 
    } 
} 
+0

目前尚不清楚對我有什麼選擇標準是。驅動器的數量(假設第一個CSV中的'P1'到'P5'字段代表驅動器)在兩個文件中都是相同的,那麼爲什麼驅動器F:和G:必須列出server4,而其他的不是? –

+0

cisearch.csv是來自CMDB的報告:P1-P5是添加到服務器的分區 - server1只有一個驅動器,server2有兩個分區,server3只有一個,server4有5個分區。我需要將它與第二個來自Nagios的報告進行比較,監控什麼。我需要找到P1-P5和服務器名稱什麼是不監控... – g0mez

+0

我認爲,我需要:如果dDrive是空白 - 無效值,繼續eDrive ...如果dDrive值大於0,請嘗試選擇字符串... – g0mez

回答

-1

和什麼有關:

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 
    } 
+1

這是如何回答你的問題?如果您需要提供更多信息/說明,請編輯您的問題。 –