如何通过PowerShell与Microsoft Teams Webhook实现数组换行输出
解决Teams Webhook消息中用户列表无法换行的问题
问题核心在于Teams的MessageCard消息格式支持HTML标签实现换行,而非普通文本换行符(如\n、\r),之前尝试的换行方式不符合Teams的渲染规则。
修改后的PowerShell代码
$URI = "你的Teams Webhook地址" $AD = "abc","bcd","cdb","bva","dfdf","4gfd09","sdf435" $Date = Get-Date # 使用HTML换行标签<br>拼接用户列表 $AddUsersList = $AD -join "<br>" Write-Host "Build Teams message" $JSONBody = [PSCustomObject][Ordered]@{ "@type" = "MessageCard" "@context" = "http://schema.org/extensions" "themeColor" = '25bc15' "title" = "TEST - $Date" "text" = @" $($AD.Count) users were added<br> $AddUsersList "@ } $TeamMessageBody = ConvertTo-Json $JSONBody $parameters = @{ "URI" = $URI "Method" = 'POST' "Body" = $TeamMessageBody "ContentType" = 'application/json' } Invoke-RestMethod @parameters
关键修改点说明
- 替换换行符为
<br>:将用户数组用HTML换行标签<br>拼接,Teams会正确识别并渲染为换行。 - 使用Here-String定义text内容:避免PowerShell字符串中的换行被JSON转换时干扰,同时清晰分隔消息内容。
- 修正@context的URL格式:原代码中URL多了一对尖括号,去掉后符合MessageCard规范。
内容的提问来源于stack exchange,提问作者JAE6513216
相关产品推荐
相关产品推荐

