如何使用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