1

У меня есть PowerShell Script, который содержит переменную $frcnt , он дает массив условий буксировки:
1. Values: название процесса (без дубликатов).
2. Keys: сколько дубликатов обрабатывают. я хочу показать каждый вышеупомянутый массив в таблице HTML, такой как:

Keys         Values
chrome       10
explorer     5
firefox      7

вот мой неправильный синтаксис:

    $GetCon = Get-NetTCPConnection


$GName = foreach ($process in $GetCon) {

    $processName = (Get-Process -Id $process.OwningProcess).ProcessName
    $process | Add-Member -NotePropertyName ProcessName -NotePropertyValue $processName -PassThru
}

$gnmcnt = $GetCon | select -ExpandProperty ProcessName
$frcnt=@{}
$gnmcnt | % {if (!($frcnt.ContainsKey($_))) {$frcnt.Add($_,1)} else {$frcnt.Item($_)=$frcnt.Item($_) +1}}




$TableBody,$StrBody=""


$frcnt | ForEach-Object {

$TableBody+="<tr><td>$($_.Keys)</td> <td>$($_.Values)</td></tr>"

}


$Body =@"
<table>
<th>Process</th><th>Count</th>
$TableBody
</table>
"@

$Head = "<Style> body {Background-color: lightblue; } table {background-color: white; margin: 5px; float: left; top: 0px; display: inline-block; padding:5px; border: 1px solid black} tr:nth-child(odd) {background-color: lightgray} </style>"


$HTML = ConvertTo-Html -Body $Body -Head $Head


$HTML | Out-File -filepath "C:\temp\test.html" -Force

Invoke-Item "C:\temp\test.html"

Ее результат:

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

1 ответ1

2

Чтобы преобразовать хеш-таблицу $ frcnt в массив, вы можете использовать.Метод GetEnumerator.
,Ключи меняются на.Имя тогда. а также
,Значения в единственном числе.Значение

Изменить строки

$frcnt | ForEach-Object {
  $TableBody+="<tr><td>$($_.Keys)</td> <td>$($_.Values)</td></tr>"
}

в

$frcntArr = $frcnt.GetEnumerator() |%{$_}
ForEach ($Row in $frcntArr) {
  $TableBody+="<tr><td>$($Row.Name)</td> <td>$($Row.Value)</td></tr>`r`n"
}

редактировать

или еще лучше, только с одним Foreach

$frcnt.GetEnumerator() | ForEach {
  $TableBody+="<tr><td>$($_.Name)</td> <td>$($_.Value)</td></tr>`r`n"
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .