ConvertTo-Html

將 .NET 物件轉換成可在網頁瀏覽器中顯示的 HTML。

Syntax

ConvertTo-Html
              [-InputObject <PSObject>]
              [[-Property] <Object[]>]
              [[-Body] <String[]>]
              [[-Head] <String[]>]
              [[-Title] <String>]
              [-As <String>]
              [-CssUri <Uri>]
              [-PostContent <String[]>]
              [-PreContent <String[]>]
              [-Meta <Hashtable>]
              [-Charset <String>]
              [-Transitional]
              [<CommonParameters>]
ConvertTo-Html
              [-InputObject <PSObject>]
              [[-Property] <Object[]>]
              [-As <String>]
              [-Fragment]
              [-PostContent <String[]>]
              [-PreContent <String[]>]
              [<CommonParameters>]

Description

Cmdlet 會將 ConvertTo-Html .NET 物件轉換成可在網頁瀏覽器中顯示的 HTML。 您可以使用此 Cmdlet 在網頁中顯示命令的輸出。

您可以使用 的參數 ConvertTo-Html 來選取物件屬性、指定數據表或清單格式、指定 HTML 頁面標題、在 物件前後新增文字,以及只傳回數據表或清單片段,而不是嚴格的 DTD 頁面。

當您將多個物件提交至 ConvertTo-Html時,PowerShell 會根據您提交之第一個物件的屬性來建立數據表(或清單)。 如果其餘對象沒有其中一個指定的屬性,該物件的屬性值就是空的儲存格。 如果其餘物件有其他屬性,這些屬性值就不會包含在檔案中。

範例

範例 1:建立網頁以顯示日期

ConvertTo-Html -InputObject (Get-Date)

此命令會建立 HTML 頁面,以顯示目前日期的屬性。 它會使用 InputObject 參數,將命令的結果 Get-Date 提交至 ConvertTo-Html Cmdlet。

範例 2:建立網頁以顯示 PowerShell 別名

Get-Alias | ConvertTo-Html | Out-File aliases.htm
Invoke-Item aliases.htm

此命令會建立 HTML 頁面,以列出目前控制台中的 PowerShell 別名。

命令會 Get-Alias 使用 Cmdlet 來取得別名。 它會使用管線運算符 (|) 將別名傳送至 ConvertTo-Html Cmdlet,以建立 HTML 頁面。 此命令也會使用 Out-File Cmdlet 將 HTML 程式代碼傳送至 aliases.htm 檔案。

範例 3:建立網頁以顯示 PowerShell 事件

Get-EventLog -LogName "Windows PowerShell" | ConvertTo-Html | Out-File pslog.htm

此命令會建立名為 pslog.htm 的 HTML 頁面,以在本機電腦上的 Windows PowerShell 事件記錄檔中顯示事件。

它會使用 Get-EventLog Cmdlet 來取得 Windows PowerShell 記錄檔中的事件,然後使用管線運算符 (|) 將事件傳送至 ConvertTo-Html Cmdlet。 此命令也會使用 Out-File Cmdlet 將 HTML 程式代碼傳送至 pslog.htm 檔案。

此命令也會使用 Out-File Cmdlet 將 HTML 程式代碼傳送至 pslog.htm 檔案。

範例 4:建立網頁以顯示進程

Get-Process |
  ConvertTo-Html -Property Name, Path, Company -Title "Process Information" |
    Out-File proc.htm
Invoke-Item proc.htm

這些命令會建立並開啟 HTML 頁面,以列出本機計算機上進程的名稱、路徑和公司。

第一個命令會 Get-Process 使用 Cmdlet 來取得對象,這些物件代表電腦上執行的進程。 命令會使用管線運算符 (|) 將進程物件傳送至 ConvertTo-Html Cmdlet。

此命令會 使用 Property 參數來選取要包含在數據表中的進程物件的三個屬性。 此命令會 使用 Title 參數來指定 HTML 頁面的標題。 命令也會使用 Out-File Cmdlet 將產生的 HTML 傳送至名為 的 Proc.htm檔案。

第二個命令會 Invoke-Item 使用 Cmdlet 在預設瀏覽器開啟 Proc.htm

範例 5:建立網頁以顯示服務物件

Get-Service | ConvertTo-Html -CssUri "test.css"

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>HTML TABLE</title>
<link rel="stylesheet" type="text/css" href="test.css" />
...

此命令會建立 Cmdlet 傳回之服務物件的 Get-Service HTML 頁面。 此命令會使用 CssUri 參數來指定 HTML 頁面的級聯樣式表單。

CssUri 參數會將額外的<link rel="stylesheet" type="text/css" href="test.css">標記新增至產生的 HTML。 標籤中的 HREF 屬性包含樣式表單的名稱。

範例 6:建立網頁以顯示服務物件

Get-Service | ConvertTo-Html -As LIST | Out-File services.htm

此命令會建立 Cmdlet 傳回之服務物件的 Get-Service HTML 頁面。 命令會使用 As 參數來指定清單格式。 Cmdlet Out-File 會將產生的 HTML 傳送至 Services.htm 檔案。

範例 7:建立目前日期的 Web 數據表

Get-Date | ConvertTo-Html -Fragment

<table>
<colgroup>...</colgroup>
<tr><th>DisplayHint</th><th>DateTime</th><th>Date</th><th>Day</th><th>DayOfWeek</th><th>DayOfYear</th><th>Hour</th>
<th>Kind</th><th>Millisecond</th><th>Minute</th><th>Month</th><th>Second</th><th>Ticks</th><th>TimeOfDay</th><th>Year</th></tr>
<tr><td>DateTime</td><td>Monday, May 05, 2008 10:40:04 AM</td><td>5/5/2008 12:00:00 AM</td><td>5</td><td>Monday</td>
<td>126</td><td>10</td><td>Local</td><td>123</td><td>40</td><td>5</td><td>4</td><td>633455808041237213</td><td>10:40:04.12
37213</td><td>2008</td></tr>
</table>

此命令會使用 ConvertTo-Html 來產生目前日期的 HTML 資料表。 命令會 Get-Date 使用 Cmdlet 來取得目前的日期。 它會使用管線運算符 (|) 將結果傳送至 ConvertTo-Html Cmdlet。

此命令 ConvertTo-Html 包含 Fragment 參數,其會將輸出限製為 HTML 資料表。 因此,會省略 HTML 頁面的其他元素,例如 <HEAD><BODY> 標記。

範例 8:建立網頁以顯示 PowerShell 事件

Get-EventLog -Log "Windows PowerShell" | ConvertTo-Html -Property id, level, task

此命令會 Get-EventLog 使用 Cmdlet 從 Windows PowerShell 事件記錄檔取得事件。

它會使用管線運算符 (|) 將事件傳送至 ConvertTo-Html Cmdlet,以將事件轉換成 HTML 格式。

此命令 ConvertTo-Html使用 Property 參數只 選取事件的標識碼層級Task 屬性。

範例 9:建立網頁以顯示指定的服務

$htmlParams = @{
  Title = "Windows Services: Server01"
  Body = Get-Date
  PreContent = "<P>Generated by Corporate IT</P>"
  PostContent = "For details, contact Corporate IT."
}
Get-Service A* |
  ConvertTo-Html @htmlParams |
    Out-File Services.htm
Invoke-Item Services.htm

此命令會建立並開啟一個網頁,其會顯示以 A開頭之計算機上的服務。 它會使用的 TitleBodyPreContent 和 PostContent 參數ConvertTo-Html來自定義輸出。

命令的第一個部分會 Get-Service 使用 Cmdlet 取得以 開頭 A之電腦上的服務。 命令會使用管線運算符 (|) 將結果傳送至 ConvertTo-Html Cmdlet。 命令也會使用 Out-File Cmdlet 將輸出傳送至 Services.htm 檔案。

分號 (;) 會結束第一個命令,並啟動第二個命令,它會使用 Invoke-Item Cmdlet 在預設瀏覽器中開啟 Services.htm 檔案。

範例 10:設定 HTML 的 Meta 屬性和 Charset

Get-Service | ConvertTo-HTML -Meta @{
  refresh=10
  author="Author's Name"
  keywords="PowerShell, HTML, ConvertTo-HTML"
} -Charset "UTF-8"

此命令會建立網頁的 HTML,其中包含用於重新整理、作者和關鍵詞的中繼標籤。 頁面的字元集設定為UTF-8

範例 11:將 HTML 設定為 XHTML 過渡 DTD

Get-Service | ConvertTo-HTML -Transitional

此命令會將傳回 HTML 的 設定 DOCTYPEXHTML 過渡 DTD

參數

-As

判斷物件的格式為資料表或清單。 有效值為 TableList。 預設值為 Table

Table 值會產生類似 PowerShell 資料表格式的 HTML 資料表。 標頭數據列會顯示屬性名稱。 每個數據表數據列都代表物件,並顯示每個屬性的物件值。

List 值會為每個類似 PowerShell 清單格式的物件產生兩欄 HTML 資料表。 第一個數據行會顯示屬性名稱。 第二個數據行會顯示屬性值。

Type:String
Accepted values:Table, List
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Body

指定要在開頭 <BODY> 標記之後新增的文字。 根據預設,該位置沒有文字。

Type:String[]
Position:3
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Charset

指定要加入至開頭 <charset> 標記的文字。 根據預設,該位置沒有文字。

此參數是在 PowerShell 6.0 中引進的。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CssUri

指定套用至 HTML 檔案之級聯樣式表單 (CSS) 的統一資源識別碼 (URI)。 URI 包含在輸出的樣式表單連結中。

Type:Uri
Aliases:cu, uri
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Fragment

只產生 HTML 數據表。 <HTML>省略、 <TITLE><HEAD><BODY> 標記。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Head

指定標記的內容 <HEAD> 。 預設值為 <title\>HTML TABLE</title>。 如果您使用 Head 參數,則會忽略 Title 參數。

Type:String[]
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

指定要以 HTML 表示的物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。

如果您使用此參數來提交多個物件,例如計算機上的所有服務, ConvertTo-Html 請建立一個數據表,以顯示集合的屬性或對象的陣列。 若要建立個別物件的數據表,請使用管線運算子將物件管線傳送至 ConvertTo-Html

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Meta

指定要加入至開頭 <meta> 標記的文字。 根據預設,該位置沒有文字。

此參數是在 PowerShell 6.0 中引進的。

Type:Hashtable
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PostContent

指定要在結尾 </TABLE> 標記之後新增的文字。 根據預設,該位置沒有文字。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PreContent

指定要在開頭 <TABLE> 標記之前新增的文字。 根據預設,該位置沒有文字。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Property

在 HTML 中包含物件的指定屬性。 Property 參數的值可以是新的導出屬性。 匯出屬性可以是腳本區塊或哈希表。 有效的機碼/值組如下:

  • Name (或標籤) - <string> (PowerShell 6.x 中新增)
  • Expression - <string><script block>
  • FormatString - <string>
  • Width - <int32> - 必須大於 0
  • Alignment - value 可以是 LeftCenterRight

如需詳細資訊,請參閱 about_Calculated_Properties

Type:Object[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Title

指定 HTML 檔案的標題,也就是標籤之間 <TITLE> 出現的文字。

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Transitional

DOCTYPE將 變更為 XHTML 過渡 DTD,預設值DOCTYPEXHTML Strict DTD

此參數是在 PowerShell 6.0 中引進的。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

PSObject

您可以使用管線將任何物件傳送至此 Cmdlet。

輸出

String

此 Cmdlet 會傳回代表已轉換物件的 HTML 字串陣列。

備註

若要使用此 Cmdlet,請使用管線將一或多個對象傳送至 Cmdlet,或使用 InputObject 參數來指定物件。 當輸入包含多個物件時,這兩種方法的輸出會大不相同。

  • 當您使用管線將多個對象傳送至 Cmdlet 時,PowerShell 會一次將對象傳送至 Cmdlet。 因此, ConvertTo-Html 建立顯示個別對象的數據表。 例如,如果您將計算機上的進程管線傳送至 ConvertTo-Html,產生的數據表會顯示所有進程。

  • 當您使用 InputObject 參數提交多個物件時, ConvertTo-Html 會以集合或數位的形式接收這些物件。 因此,它會建立數據表來顯示數位及其屬性,而不是陣列中的專案。 例如,如果您使用 InputObject 將電腦上的進程提交至 ConvertTo-Html,產生的數據表會顯示物件陣列及其屬性。

    為了符合 XHTML Strict DTD,標記 DOCTYPE 會據以修改:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"\>