ConvertTo-Html
将.NET 对象转换为可以在 Web 浏览器中显示的 HTML。
语法
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>]
说明
ConvertTo-Html
cmdlet 将 .NET 对象转换为可在 Web 浏览器中显示的 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,此 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
来获取 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" />
...
此命令将创建 Get-Service
cmdlet 返回的服务对象的 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
此命令将创建 Get-Service
cmdlet 返回的服务对象的 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,此 cmdlet 将事件转换为 HTML 格式。
ConvertTo-Html
命令使用 Property 参数来仅选择事件的 ID、Level 和 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
开头的服务。 它使用 ConvertTo-Html
的 Title、Body、PreContent 和 PostContent 参数来自定义输出。
该命令的第一部分使用 Get-Service
cmdlet 来获取计算机中以 A
开头的服务。 该命令使用管道运算符 (|
) 将结果发送到 ConvertTo-Html
cmdlet。 该命令还使用 Out-File
cmdlet 将输出发送到 Services.htm
文件。
分号 (;
) 将结束第一个命令并启动第二个命令,第二个命令将使用 Invoke-Item
cmdlet 在默认浏览器中打开 Services.htm
文件。
示例 10:设置 HTML 的元属性和字符集
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 Transitional DTD
Get-Service | ConvertTo-HTML -Transitional
此命令将返回的 HTML 的 DOCTYPE
设置为 XHTML Transitional DTD
参数
-As
确定将对象设置为表格格式还是列表格式。 有效值为 Table 和 List。 默认值为 Table。
Table 值会生成一个类似于 PowerShell 表格格式的 HTML 表。 标题行显示属性名称。 表格的每一行表示一个对象,并显示该对象的每个属性值。
List 值会为每个对象生成一个包含两列的 HTML 表,该表类似于 PowerShell 列表格式。 第一列显示属性名称。 第二列显示属性值。
类型: | String |
接受的值: | Table, List |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Body
指定要在左 <BODY>
标记之后添加的文本。 默认情况下,该位置没有文本。
类型: | String[] |
Position: | 3 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Charset
指定要向左 <charset>
标记添加的文本。 默认情况下,该位置没有文本。
此参数是在 PowerShell 6.0 中引入的。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-CssUri
指定级联样式表 (CSS) 的统一资源标识符 (URI),该 URI 适用于 HTML 文件。 输出中的样式表链接中包含该 URI。
类型: | Uri |
别名: | cu, uri |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Fragment
仅生成一个 HTML 表。 省略 <HTML>
、<HEAD>
、<TITLE>
和 <BODY>
标记。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Head
指定 <HEAD>
标记的内容。 默认为 <title\>HTML TABLE</title>
。 如果使用 Head 参数,则会忽略 Title 参数。
类型: | String[] |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-InputObject
指定要用 HTML 表示的对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。
如果使用此参数来提交多个对象(如计算机上的所有服务),ConvertTo-Html
会创建一个表格,该表格显示集合的属性或对象数组的属性。 若要创建由单个对象组成的表格,请使用管道运算符通过管道将对象传递给 ConvertTo-Html
。
类型: | PSObject |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-Meta
指定要向左 <meta>
标记添加的文本。 默认情况下,该位置没有文本。
此参数是在 PowerShell 6.0 中引入的。
类型: | Hashtable |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-PostContent
指定要在右 </TABLE>
标记之后添加的文本。 默认情况下,该位置没有文本。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-PreContent
指定要在左 <TABLE>
标记之前添加的文本。 默认情况下,该位置没有文本。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Property
在 HTML 中包括所指定的对象属性。 Property 参数的值可以是新的计算属性。 计算属性可以是脚本块或哈希表。 有效的键值对包括:
Name
(或标签)-<string>
(在 PowerShell 6.x 中添加)Expression
-<string>
或<script block>
FormatString
-<string>
Width
-<int32>
- 必须大于0
Alignment
- 值可以是Left
、Center
或Right
有关详细信息,请参阅 about_Calculated_Properties。
类型: | Object[] |
Position: | 0 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Title
指定 HTML 文件的标题,即在 <TITLE>
标记之间显示的文本。
类型: | String |
Position: | 2 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Transitional
将 DOCTYPE
更改为 XHTML Transitional DTD,默认 DOCTYPE
为 XHTML Strict DTD。
此参数是在 PowerShell 6.0 中引入的。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
你可以通过管道将任何对象传递给此 cmdlet。
输出
此 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"\>