Slack 块降价语法在哈希表中不起作用

Slack block markdown syntax not working in hashtable

我正在使用 Powershell 中的哈希表生成 Slack 消息。

哈希表的生成方式如下:

$serviceitems = foreach ($r in $rows) {
    @{
        type = 'section'
        text = @{
            type = 'mrkdwn'
            text = "*{0}*\n{1:C2}" -f $r[1], $r[0]
        }
    }
    @{
        type = 'divider'
    } 
}

消息显示在 Slack 中,但 \n 打印出来,而不是像它应该的那样换行。两个 * 使文本按预期加粗。我尝试在 \n 之前添加一个反引号,还尝试添加一个额外的 \。两者都没有改变。

\ 在 PowerShell 字符串中没有特殊含义。

PowerShell 使用 `(so-called 反引号)作为转义字符,因此您需要在 expandable (double-quoted) string ("...") 中使用转义序列 `n 以嵌入实际的换行符(LF 字符)在字符串中。

简单示例:

PS> "line 1`nline 2" | ForEach-Object { "[$_]" }
[line 1
line 2]

PowerShell 愉快地接受单独的 LF 作为换行符;如果您确实需要 CRLF 换行符,请使用 `r`n。要引用 platform-native 换行序列,请使用 [Environment]::NewLine$([Environment]::NewLine)"..." 中使用它)。

另请参阅:


至于你试过的

I tried adding a backtick to before \n and also tried adding an extra \.

正如顶部所暗示的,\ 根本不应该出现在图片中。

尝试 `\n 导致 ` 转义 \ 字符,这没有任何效果(忽略转义 non-special 字符);换句话说:"`\n""\n" 相同,即 verbatim \n