Вывод списка файлов с разрывами строк в Microsoft Teams - PullRequest
0 голосов
/ 14 февраля 2019

мы пытаемся получить список файлов с определенной фильтрацией в нашем отделе технической поддержки 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

Что я хотел бы получить в командах: список с одним именем файла на строку. Что я получаю сейчас в командах: одна длинная строка с именами файлов, разделенными пробелом.

Заранее благодарю за любую помощь :-)

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

первое опубликованное вами решение было правильным!Большое вам спасибо за вашу быструю помощь.Я пробовал похожие варианты с `n , но Команды не восприняли это как действительный разрыв строки.

Я должен вам холодную пинту пива: -)
С уважением,Рууд

0 голосов
/ 14 февраля 2019

Вам нужно добавить разрыв строки для каждого элемента в массиве, который в командах, по моему мнению, состоит из 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> в конец каждого объекта, но вам нужно будет добавить , чтобы применить форматирование HTML.

Это выглядит так: (Iпроверил это с Send-MailMessage -BodyAsHtml, сработавшим безупречно)

<code>$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
'} "-Uri https://outlook.office.com/webhook/ | Out-Null

Дайте мне знать, если какой-либо изработать для вас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...