2016-03-15 45 views
2

我想獲得一個單元格輸出另一個單元格的行的計算。有些單元格計算錯誤。CSV中的單元格計算不正確。顯示錯誤的數字。獲取錯誤

這裏是我的樣本數據:

 Total Devices Vulnerability Description  Comments 
Row1  3    Plugin:1234     Host1.Domain 
         Device Affected:   Host4.Domain 
         Host1.Domain    Host5.Domain 

Row2  12   Plugin:5678     Host2.Domain 
         Device Affected:   Host3.Domain 
         Host2.Domain 

應該

 Total Devices Vulnerability Description  Comments 
Row1  3    Plugin:1234     Host1.Domain 
         Device Affected:   Host4.Domain 
         Host1.Domain    Host5.Domain 

Row2  1   Plugin:5678     Host2.Domain 
         Device Affected:   
         Host2.Domain 

我的代碼:

#定義我們要刪除 $ PendingRemoval = 「Host3.Domain」, 「Host6.Domain」 主機名

# Import the original data set 
$Data = Import-Csv .\Old.csv 

for($i = 0; $i -lt $data.Count; $i++) 
{ 
    # Grab all hostnames from the comments field 
    $HostNames = $Data[$i].Comments -split "`r?`n" 

    #Set Vulnerability Column Variable 
    [string]$VulnerabilityDesc = $Data[$i].'Vulnerability Description' 

    #Remove the Hostnames from Vulnerability Cells 
    foreach ($HostName in $HostNames) { 
    $VulnerabilityDesc = $VulnerabilityDesc.Replace($HostName, "") 
    } 
    $VulnerabilityDesc = $VulnerabilityDesc.Replace("Devices Affected", "") 
    $VulnerabilityDesc = $VulnerabilityDesc.TrimEnd() 
    $Data[$i].'Vulnerability Description' = $VulnerabilityDes 

    # Filter out unwanted ones 
    $HostNames = $HostNames |Where-Object {$_ -notin $PendingRemoval} 

    # Update original row 
    $Data[$i].Comments = $HostNames -join [System.Environment]::NewLine 
    $Data[$i].'Total Devices' = $HostNames.Length 
} 

# Export it to same csv 
$Data | Export-Csv .\New.csv -NoTypeInformation 
+0

友情提示:我已經向您展示瞭如何現在,但是學習如何格式化您的問題和代碼示例將是在我們的網站上學習的好東西:http://stackoverflow.com/editing-help - 您的CSV示例也有點混亂,我不知道在哪些列下哪些值應該生存。 – Kev

+0

好的我會記住這一點 – ShanayL

回答

0

對於我,它看起來像你的Import-CSV需要一個-delimiter '\t'正常工作。

您究竟在哪裏撥打.replace

+0

對不起,我把那部分拿出來了。這實際上是我的代碼的另一部分,我試圖用空白替換主機名。我會編輯它以包含該部分 – ShanayL

+0

好吧,我們可以工作。這個問題似乎在'$ hostnames'中。你檢查過它的內容嗎?也許你的分割不能像例外那樣工作。當你調用'$ Data [$ i] .Comments'時,數據如何顯示? – restless1987

+0

它說 '$ Data [$ i] .Comments = Host1.Domain Host4.Domain Host5.Domain' – ShanayL