Вывод цикла for в переменную и затем экспорт в HTML - PullRequest
0 голосов
/ 02 октября 2018

У меня есть этот код PowerShell для сравнения потока данных через коммутатор, когда данные NewData и CompareData совпадают, порт неактивен.Если отличается, он активен.Используется для ежемесячного сообщения.У меня проблема с выводом цикла.Я хочу сохранить все отрывки в переменной, которую затем могу экспортировать в HTML.

for ($i=0; $i -lt $NewData.Length; $i++){
if($NewData[$i] -eq $CompareData[$i]){
$n = $i
$n++
Write-Host "Port $n   Unactive"  -ForegroundColor Yellow 
}
elseif($NovaData[$i] -ne $SrovavaciData[$i]){
$a = $i
$a++
Write-Host "Port $a   Active"  -ForegroundColor Green
}
}

Это мой вывод, который мне нужно получить в переменную.Пока я могу сохранить только последний элемент.

Port 2   Unactive
Port 7   Unactive
Port 8   Unactive
Port 12   Unactive
Port 13   Unactive
Port 14   Unactive
Port 15   Unactive
Port 18   Unactive
Port 21   Unactive
Port 23   Unactive
Port 25   Unactive
Port 26   Unactive
Port 29   Unactive
Port 30   Unactive
Port 33   Unactive
Port 36   Unactive
Port 38   Unactive
Port 46   Unactive
Port 47   Unactive

Спасибо за ответы.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Сохранение всего в массиве:

$output = @()
for ($i=0; $i -lt $NewData.Length; $i++){
    if($NewData[$i] -eq $CompareData[$i]){
        $n = $i
        $n++
        $output += "Port $n   Unactive"
    }
    elseif($NovaData[$i] -ne $SrovavaciData[$i]){
        $a = $i
        $a++
        $output += "Port $a   Active"
    }
}

$output

Примечание: если в списке массивов хранится много элементов, добавление новых элементов с помощью + = выполняется довольно медленно, так как каждый раз при добавленииэлемент, весь массив копируется и добавляется новый элемент.

0 голосов
/ 02 октября 2018

Вы можете просто сохранить каждую строку, которую хотите записать, в массив.

$informations = @()
for ($i=0; $i -lt $NewData.Length; $i++) {
    if($NewData[$i] -eq $CompareData[$i]) {
        $message = "Port $($i +1) Unactive"
        Write-Host $Message -ForegroundColor Yellow

    elseif($NovaData[$i] -ne $SrovavaciData[$i]) {
        $message = "Port $($i +1) Active"
        Write-Host $Message -ForegroundColor Yellow
    }
    $informations += $message
}

A лучше - сохранить оба значения в хэш-списке и экспортироватьВсе это для html позже, как это:

$informations = @{}
for ($i=0; $i -lt $NewData.Length; $i++) {
    if($NewData[$i] -eq $CompareData[$i]) {
        $informations += @{"Port $($i +1)"="Unactive}

    elseif($NovaData[$i] -ne $SrovavaciData[$i]) {
        $informations += @{"Port $($i +1)"="Active}
    }
}

New-Object psobject -Property $informations | ConvertTo-Html -Fragment | Out-File .\port-report.html

Это сгенерирует таблицу со всеми вашими результатами в html файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...