从for循环输出到变量,然后导出到HTML

时间:2018-10-02 07:45:58

标签: powershell

我有此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 :(得分:0)

您只需将要写入的每一行存储到数组中即可。

$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
}

一种更好的方式是将两个值都存储在哈希列表中,然后将整个内容导出到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文件中的所有结果生成一个表格。

答案 1 :(得分:0)

将所有内容存储在数组中

$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

侧面说明:如果数组列表中要存储很多项目,则使用+ =添加新元素的速度很慢,因为每次添加元素时,整个数组都会被复制并添加新项。