Powershell输出中的HTML表

时间:2018-11-06 09:00:22

标签: html css powershell html-table

我的html输出有问题。我的代码带有循环,该循环从列表中顺序获取IP地址并制作下表。我需要另一个交换机的数据中的另一个表。

enter image description here

我的问题是我不完全知道如何只重复表及其标题,然后将其写入并释放到一个html文件中。

这是我正在调用该变量的表的HTML代码。

$Table = @" 
<table 
width: 912px;
border-collapse: collapse;
border-width: 2px;
border-style: solid;
border-color: grey;
font: 14pt Calibri;
color: black;
margin-bottom: 10px;
text-align: center;>

<h2>Switch 1</h2>
<div class=subtitle>
THIS is table from switch 1
</div>

<tbody>
<tr>   
<th
height="18" width="90"; 
<td>
Adresa IP</span>
     </td>
     </th>

<th
height="18" width="90"; 
<td>
Počet portů</span>
     </td>
     </th>

<th
height="18" width="90"; 
<td>
Obsazené porty</span>
     </td>
     </th>

<th
height="18" width="90"; 
<td>
Volné porty</span>
     </td>
     </th>

<th
height="18" width="440"; 
<td>
Neaktivní porty</span>
     </td>
     </th>
</tr>

     <tr>
     <td 
height="18" width="90";
border-bottom-width: 2px; 
border-bottom-style: inset;">
    <span 
style="color: black; 
font-family: Calibri; 
font-size: 11pt; ">
$_</span>
     </td>

     <td 
height="18" width="90"; 
border-bottom-width: 2px; 
border-bottom-style: inset;">
    <span 
style="color:black; 
font-family: Calibri; 
font-size: 12pt; ">
$PocetPortu</span>
      </td>

      <td 
height="18" width="90"; 
border-bottom-width: 2px; 
border-bottom-style: inset;">
    <span 
style="color:black; 
font-family: Calibri; 
font-size: 11pt; ">
$OP
</span>
      </td>

      <td 
height="18" width="90"; 
border-bottom-width: 2px; 
border-bottom-style: inset;">
     <span 
style="color:black; 
font-family: Calibri; 
font-size: 11pt; ">
$PP</span>
     </td>

     <td 
height="18" width="440"; 
border-bottom-width: 2px; 
border-bottom-style: inset;">
     <span 
style="color:black; 
font-family: Calibri; 
font-size: 11pt; ">
$vypis</span>
     </td>
</tbody>
</table>
"@

只有一个表(最后一个表)始终出现在输出页面上,并且我在循环中捕获了HTML代码,在该循环中将值放入变量中。

使用以下命令调用该命令:

$html | ConvertTo-Html -Head $Top_Head, $Style -Body $Table  -PostContent $Post_text | Out-File C:\test\test.html

Invoke-Expression C:\test\test.html

谢谢。

1 个答案:

答案 0 :(得分:1)

将数据输出到对象,然后使用ConvertTo-Html进行繁重的工作并为表创建html。

这将不允许您使用现有的内联CSS,但是所有样式信息都可以通过<style></style>移到单个位置

我不知道您如何获取开关信息,因此我已经硬编码了值以用作示例值:

# array containing a value for input into code to get switch information
$switches = '192.168.7.1','10.0.7.1'

foreach ($switch in $switches) {

    # your code to get switch information
    # output values from this code go in object below
    # example values used as we don't have this code

    $switch_info = [PSCustomObject]@{
        'Adresa IP' = $switch
        'Počet portů' = '48'
        'Obsazené porty' = '38'
        'Volné porty' = '10'
        'Neaktivní porty' = '7 8 13 14'
    }

    $table_title = "<div class=subtitle>This is table from switch $($switches.IndexOf($switch) + 1)</div>"
    $table_html = $switch_info | ConvertTo-Html -Fragment | Out-String

    $tables += $table_title
    $tables += $table_html
}

$Style = @'
<style>
table{
width: 912px;
border-collapse: collapse;
border-width: 2px;
border-style: solid;
border-color: grey;
font: 14pt Calibri;
color: black;
margin-bottom: 10px;
text-align: center;
}
th {
    background-color: #0000ff;
    color: white;
}
</style>
'@

$Top_Head = '<div>TopHead</div>'
$Post_text = '<div>PostText</div>'

ConvertTo-Html -Head $Top_Head,$Style -Body '<h2>Switch Information</h2>',$tables -PostContent $Post_text | Out-File C:\test\test.html

编辑:刚刚看到您的变量名,您可能会像这样使用它们:

    $switch_info = [PSCustomObject]@{
        'Adresa IP' = $switch
        'Počet portů' = $PocetPortu
        'Obsazené porty' = $OP
        'Volné porty' = $PP
        'Neaktivní porty' = $vypis
    }