PowerShell用ConvertTo-Html将对象转HTML字符串,需配合Out-File保存;关键点:选数据、控列(Select-Object)、加样式(-Head);支持-Title、-PreContent、-Fragment等参数定制报表。
用 powershell 把查询结果转成 html 表格报表,核心是 convertto-html 这个命令。它不生成文件,只是把对象转成 html 字符串,所以必须配合 out-file 或 set-content 才能保存为 .html 文件。
关键点就三个:选好数据、控制列、加点样式
用 ConvertTo-Html 基础导出表格
直接管道传入对象,指定要显示的属性即可:
Get-Process | Select-Object Name, Id, CPU, WS | ConvertTo-Html | Out-File "ProcessReport.html"
这会生成一个带 <table> 的标准 HTML 页面,打开就能看。注意:
-
Select-Object决定了表格有哪些列 -
ConvertTo-Html自动按第一个对象的属性建表头,后续对象缺某列就留空 - 不要用
Format-Table提前格式化,否则传给ConvertTo-Html的就不是原始对象了
加标题、时间戳和页面说明
用 -Title 和 -PreContent 让报表更正式:
立即学习“前端免费学习笔记(深入)”;
Get-Service | Where-Object Status -eq 'Running' | Select-Object Name, DisplayName, StartType | ConvertTo-Html -Title "运行中的服务清单" -PreContent "<h2>生成时间:$(Get-Date)</h2>" | Out-File "RunningServices.html"
-
-Title控制浏览器标签页文字和<title>标签 -
-PreContent插入在表格前面的内容(比如二级标题、说明文字) -
-PostContent可插在表格后面,适合加备注或签名
加 CSS 样式让表格更清晰
纯 HTML 表格默认很朴素,加一段内联样式马上提升可读性:
$style = @"
<style>
body { font-family: 'Segoe UI', sans-serif; background-color: #f8f9fa; }
table { border-collapse: collapse; width: 100%; margin: 20px 0; }
th, td { border: 1px solid #dee2e6; padding: 8px 12px; text-align: left; }
th { background-color: #495057; color: white; }
tr:nth-child(even) { background-color: #e9ecef; }
</style>
"@
Get-VM | Select-Object Name, PowerState, NumCpu, MemoryMB |
ConvertTo-Html -Head $style -Title "虚拟机资产清单" |
Out-File "VM_Report.html" -Encoding UTF8-
-Head参数插入<head>区域内容,支持<style>、<meta>等 -
-Encoding UTF8避免中文乱码,尤其是导出含中文字段时必须加
导出多组数据或分块展示
如果想在一个页面里放多个表格(比如“运行中服务”+“停止服务”),可以分段处理再拼接:
$running = Get-Service | Where-Object Status -eq 'Running' | Select-Object Name, DisplayName | ConvertTo-Html -Fragment -As Table $stopped = Get-Service | Where-Object Status -eq 'Stopped' | Select-Object Name, DisplayName | ConvertTo-Html -Fragment -As Table ConvertTo-Html -Body "<h3>运行中的服务</h3>$running<h3>已停止的服务</h3>$stopped" -Title "服务状态总览" | Out-File "ServiceSummary.html"
-
-Fragment表示只输出<table>...</table>片段,不带完整 HTML 结构 -
-As Table强制以表格形式输出(避免默认可能用列表) - 拼进
-Body后统一生成完整页面
不复杂但容易忽略细节



















