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

如何格式化PowerShell推送的Azure服务主体数据使其在MS Teams正常展示

问题原因

你遇到的格式混乱是两个问题共同导致的:

  1. 调用Get-Content时未加-Raw参数,返回结果是按行拆分的字符串数组,直接放入双引号插值时,PowerShell会默认用空格拼接所有数组元素,原文件的换行直接被替换为空格。
  2. Teams 传入Webhook的消息内容支持Markdown解析,要保留固定格式的文本需要对应语法支持。

解决方案

最简单的方式是读取文件时保留完整换行,再用Markdown代码块包裹内容,就能完全复现result.list的原有格式,修改后代码如下:

# 加-Raw参数直接读取完整带换行的整段文本
$Body = Get-Content -Path .\result.list -Raw

$JSONBody = [PSCustomObject][Ordered]@{
    "@type"      = "text/plain"
    "@context"   = "http://schema.org/extensions"
    "summary"    = "Incoming Alert Test Message!"
    "themeColor" = '0078D7'
    "title"      = "Incoming Alert Test Message!"
    # 用Markdown代码块包裹内容,空格、换行格式完全保留
    "text"       = "```$Body```"
}

$TeamMessageBody = ConvertTo-Json $JSONBody -Depth 100

$parameters = @{
    "URI"         = '<uri>'
    "Body"        = $TeamMessageBody
    "ContentType" = 'application/json'
}

Invoke-RestMethod @parameters

如果不想用代码块样式展示,也可以将换行替换为Teams支持的HTML换行标签,只需修改text字段赋值逻辑即可:

"text" = $Body.Replace("`n", "<br>")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:45:10