如何使用PowerShell在HTML网页上显示多个输出?
假设您需要使用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.htmlCSS文件
body{
background-color: LightGray;
text-align: center;
color: blue;
}
h2{
background-color: DarkOrange;
color: Cornsilk;
}
table, th, td {
border: 1px solid black;
}
输出

广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP