2016-03-15 4 views
2

Я пытаюсь получить одну ячейку для вывода вычислений строк другой ячейки. Некоторые ячейки вычисляются неправильно.Вычисление соты в CSV неправильное. Показан неправильный номер. Get Error

Вот мой пример данных:

 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

ok Я буду помнить об этом – ShanayL

ответ

0

Для мне кажется, что ваш Import-CSV нуждается в -delimiter '\t' для правильной работы.

Где вы владеете в настоящий момент: .replace?

+0

им жаль, что я принял эту часть. На самом деле это еще одна часть моего кода, где я пытаюсь заменить имя хоста пустым. Я отредактирую его, чтобы включить эту часть. – ShanayL

+0

Хорошо, с этим мы можем работать. Проблема, похоже, в '$ hostnames'. Вы проверили его содержание? возможно, ваш раскол не работает как исключенный. Как выглядят данные, когда вы вызываете '$ Data [$ i] .Comments'? – restless1987

+0

: '$ Данные [$ i] .Comments = Host1.Domain Host4.Domain Host5.Domain' – ShanayL