将带有换行符的文件列表输出到Microsoft Teams

时间:2019-02-14 15:58:58

标签: rest powershell microsoft-teams

我们正在尝试向Microsoft Teams的技术支持部门获取具有特定过滤条件的文件列表。

从技术上讲,它可以工作,但是输出混乱了。由于某种原因,我无法将文件作为团队列表获取。相反,所有文件都只是粘贴在一个大字符串中,文件名之间带有空格。

我尝试了一些格式设置选项,但无法找到更接近解决方案的地方。

$Limit = (Get-Date).AddMinutes(-15)
$Path = "C:\Users\<username>\Desktop"
$Extension = "*.*"

$Results = @()
$Results += Get-ChildItem -Path $Path -Filter $Extension -Recurse -Force | Where-Object {$_.CreationTime -lt $Limit -and ! $_.PSIsContainer -and $_.Extension -ne ".db"} | Select-Object Name -ExpandProperty Name | Sort-Object Name

Invoke-RestMethod -Method Post -ContentType "Application/Json" -Body "{'text': '$Results'}" -Uri https://outlook.office.com/webhook/<deleted for this example...> | Out-Null

我想加入团队的内容:每行只有一个文件名的列表 我现在在Teams中得到的是:一个长字符串,文件名用空格分隔。

在此先感谢您的帮助:-)

2 个答案:

答案 0 :(得分:0)

您需要为数组中的每个项目添加一个换行符,在Teams中,我认为这是3个空格和\ n

它看起来像这样:

$Limit = (Get-Date).AddMinutes(-15)
$Path = "C:\Users\<username>\Desktop"
$Extension = "*.*"

$Results = @()
$Results += Get-ChildItem -Path $Path -Filter $Extension -Recurse -Force | Where-Object {$_.CreationTime -lt $Limit -and ! $_.PSIsContainer -and $_.Extension -ne ".db"} | Select-Object Name -ExpandProperty Name | Sort-Object Name
$Results = $Results | Foreach-Object {"$_   \n"}

Invoke-RestMethod -Method Post -ContentType "Application/Json" -Body "{'text': '$Results'}" -Uri https://outlook.office.com/webhook/<deleted for this example...> | Out-Null

如果这不起作用,则可能需要遍历数组并将<br>添加到每个对象的末尾,但是您需要添加<pre></pre>才能应用HTML格式。

看起来像这样:(我在Send-MailMessage -BodyAsHtml上进行了完美测试)

$Limit = (Get-Date).AddMinutes(-15)
$Path = "C:\Users\<username>\Desktop"
$Extension = "*.*"

$Results = @()
$Results += Get-ChildItem -Path $Path -Filter $Extension -Recurse -Force | Where-Object {$_.CreationTime -lt $Limit -and ! $_.PSIsContainer -and $_.Extension -ne ".db"} | Select-Object Name -ExpandProperty Name | Sort-Object Name
$Results = $Results | Foreach-Object {"$_<br>"}

Invoke-RestMethod -Method Post -ContentType "Application/Json" -Body "{'text': '<pre>$Results</pre>'}" -Uri https://outlook.office.com/webhook/<deleted for this example...> | Out-Null

让我知道这些方法是否对您有用!

答案 1 :(得分:0)

您发布的第一个解决方案是正确的解决方案! 非常感谢您的快速帮助。我已经尝试过类似的选择 `n ,但Teams不接受将其作为有效的换行符。

我欠你一杯啤酒:-)
真诚的 粗鲁