You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PowerShell URL状态查询输出转为表格并适配邮件展示

解决方案

1. 生成结构化数据并输出HTML表格

要解决纯文本输出杂乱的问题,核心是先生成结构化对象,再将其转换为HTML格式的表格——HTML表格在邮件客户端中能保持规整的排版,不会出现错位。

修改后的PowerShell脚本示例:

# 读取URL列表
$urls = Get-Content -Path "C:\temp\link.txt"

# 存储检测结果的数组
$results = @()

foreach ($url in $urls) {
    try {
        # 发送HEAD请求获取状态码
        $response = Invoke-WebRequest -Uri $url -Method Head -ErrorAction Stop
        $statusCode = $response.StatusCode
    }
    catch {
        # 捕获请求失败的情况,记录错误状态
        $statusCode = $_.Exception.Response.StatusCode.value__
        if (-not $statusCode) {
            $statusCode = "请求失败(无法连接)"
        }
    }

    # 将结果添加为自定义对象
    $results += [PSCustomObject]@{
        URL         = $url
        HTTP状态码  = $statusCode
    }
}

# 转换为HTML表格片段
$htmlTable = $results | ConvertTo-Html -Property URL, "HTTP状态码" -Fragment | Out-String

# 添加基础CSS样式优化表格显示(可选,让表格更美观规整)
$styledHtml = @"
<style>
table { border-collapse: collapse; width: 100%; }
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
th { background-color: #f2f2f2; }
</style>
$htmlTable
"@

2. 发送带规整表格的邮件

使用Send-MailMessage时,必须指定-BodyAsHtml $true,确保邮箱客户端解析HTML内容,展示规整的表格:

# 发送邮件示例
Send-MailMessage -From "sender@example.com" `
    -To "recipient@example.com" `
    -Subject "URL状态检测报告" `
    -Body $styledHtml `
    -BodyAsHtml $true `
    -SmtpServer "smtp.example.com"

关键说明

  • 纯文本表格的问题:不同邮件客户端对纯文本的缩进、换行处理逻辑不一致,极易出现列错位;HTML是标准网页格式,所有主流邮箱都能正确解析。
  • 自定义对象的优势:结构化数据方便后续转换为任何格式(HTML、CSV等),比拼接字符串更灵活、易维护。

内容的提问来源于stack exchange,提问作者Mil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:20:07