表格中的每个结果

表格中的每个结果

我有一个 PowerShell 脚本,其中包含$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

要将哈希表 $frcnt 转换为数组,您可以使用 .GetEnumerator 方法。.Keys
更改为 .Name。.Values 更改
为单数 .Value

改变线条

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

相关内容