如何使用 PowerShell 在 HTML 网页上显示多个输出?
powershellmicrosoft technologiessoftware & coding更新于 2026/2/9 23:07:17
假设您需要使用 PowerShell 在网页上显示多个输出,我们将使用内置的 Convertto-HTML cmdlet 来实现。但为了正确显示它们,我们首先需要使用 –Fragment 参数将每个部分转换为片段。
我们举一个不带 –Fragment 参数的简单示例。在下面的示例中,我们将显示 BIOS 信息、本地磁盘信息以及自动运行但已停止的服务信息。
#To get the BIOS information
Get-CimInstance Win32_BIOS | Select Name, Manufacturer, SerialNumber, Status, Version | ConvertTo-Html | Out-File ComputerInformation.html
#To get the logical disk information
Get-CimInstance Win32_LogicalDisk | where{$_.DriveType -eq '3'} | Select DeviceID, @{N='Total Size(GB)';E={[math]::Round($_.Size/1GB,2)}}, @{N='Free size(GB)';E={[math]::Round($_.Freespace/1GB)}} | ConvertTo-Html| Out-File ComputerInformation.html -Append
#To get the service information
Get-Service | where{($_.StartType -eq "Automatic") -and ($_.Status -eq "Stopped")} | Select Name, DisplayName, StartType, Status | ConvertTo-Html | Out-File ComputerInformation.html -Append
上述脚本的输出。

上述命令的输出是正确的,但让我们通过编辑 HTML 文件来检查一下。

您可以查看上面提到的编辑后的 HTML 文件的快照,其中有三个不同的 HTML 文件附加到一个文件中,但我们不需要相同格式的输出,因为显示可能没问题。但 HTML 编辑输出文件的背景不正确。将 CSS 文件链接到整个 HTML 内容也非常困难。
由于我们需要单个 HTML 文件,因此我们将在 Convertto-HTML 命令中使用 –Fragment 参数,该参数指示 PowerShell 不要为每个输入创建单独的 HTML。为了更好地理解,我们将查看下面的脚本。
$bios = Get-CimInstance Win32_BIOS | Select Name, Manufacturer, SerialNumber, Status, Version | ConvertTo-Html –Fragment
$disks = Get-CimInstance Win32_LogicalDisk | where{$_.DriveType -eq '3'} | Select DeviceID, @{N='Total Size(GB)';E={[math]::Round($_.Size/1GB,2)}}, @{N='Free size(GB)';E={[math]::Round($_.Freespace/1GB)}} | ConvertTo-Html -Fragment
$services = Get-Service | where{($_.StartType -eq "Automatic") -and ($_.Status -eq "Stopped")} | Select Name, DisplayName, StartType, Status | ConvertTo-Html -Fragment
ConvertTo-Html -Body "$bios $disks $services" -Title "Computer Information" | Out-File ComputerInformation.html
检查上述脚本的输出结果与之前提到的一致。

现在,我们将通过编辑 HTML 文件来检查它,看看它是否包含单个 HTML 文件或多个 HTML 文件。

我们只创建了一个 HTML 文件,因此可以轻松地将 CSS 样式添加到脚本中。我们将对脚本进行一些修改,使其包含 CSS 效果,并附加一个新的 CSS 文件。两者都在下面提到。
脚本
$bios = Get-CimInstance Win32_BIOS | Select Name, Manufacturer, SerialNumber, Status, Version | ConvertTo-Html –PreContent "<h2>BIOS Information</h2>"
–Fragment
$disks = Get-CimInstance Win32_LogicalDisk | where{$_.DriveType -eq '3'} | Select DeviceID, @{N='Total Size(GB)';E={[math]::Round($_.Size/1GB,2)}}, @{N='Free size(GB)';E={[math]::Round($_.Freespace/1GB)}} | ConvertTo-Html –PreContent "<h2>Disk Information</h2>" -Fragment
$services = Get-Service | where{($_.StartType -eq "Automatic") -and ($_.Status -eq "Stopped")} | Select Name, DisplayName, StartType, Status | ConvertTo-Html –PreContent "<h2>Auto Stopped Services</h2>" -Fragment
ConvertTo-Html -Body "$bios $disks $services" -Title "Computer Information" -CssUri .\style1.css | Out-File ComputerInformation.html
CSS 文件
body{
background-color: LightGray;
text-align: center;
color: blue;
}
h2{
background-color: DarkOrange;
color: Cornsilk;
}
table, th, td {
border: 1px solid black;
}
输出


