Post zprávu na MS Týmů přes powershell

0

Otázka

Toto je můj první příspěvek tady ,tak doufám, že bude mít nějakou pomoc. Vytvořil jsem skript v powershell pro ověření platnosti služby, hlavní v azure.Skript sám o sobě funguje dobře, ale teď chci, aby po výstupu skriptu pro MS Týmů namísto generování souboru výsledků. To je kus kódu.Výsledek.seznam obsahuje výstupní a já jsem načítání $Těla

$Body = get-content -Path .\result.list

$JSONBody = [PSCustomObject][Ordered]@{
    "@type"      = "text/plain"
    "@context"   = "http://schema.org/extensions"
    "summary"    = "Incoming Alert Test Message!"
    "themeColor" = '0078D7'
    "title"      = "Incoming Alert Test Message!"
    "text"       = "$Body"
}

$TeamMessageBody = ConvertTo-Json $JSONBody -Depth 100

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

Invoke-RestMethod @parameters

To jsem se, jak výsledek.seznam vypadá.E.g pro služby-ředitelka

DisplayName   : sp-acr-ldl-pull
ObjectId      : ***********
ApplicationId : ***********
KeyId         : ***********
Type          : Password
StartDate     : 6/23/2020 2:29:20 PM
EndDate       : 6/23/2021 2:29:16 PM
Status        : Expired

Ale v Týmech to není pro člověka čitelný, protože tělo není předán správně

DisplayName: sp-acr-ldl-pull ObjectId: ********** ApplicationId : ********** KeyId: *********** Type: Password StartDate: 6/23/2020 2:29:20PM EndDate

Jak mohu formátu $JSONBody získat stejný výstup v Týmech stejný výsledek.seznam?

azure json microsoft-teams powershell
2021-11-23 17:08:12
1

Nejlepší odpověď

1

V podstatě, problém je zalomení řádku, ale máš dva problémy související s:

  1. Čtete obsah souboru přímo pomocí Get-Content. Ve výchozím nastavení v PowerShell to bude vracet ne jeden řetězec, ale spíše pole řetězců, jedna položka pro každý řádek v souboru. Získat obsah jako jeden surový řetězec, přidejte -Raw parametr na konci příkazu.

  2. Ve výchozím nastavení, Týmy, je prostě zobrazování textu bez jakéhokoliv formátování (včetně konců řádků). Pokud chcete posílat explicitní zalomení řádku, musíte říct, Týmy, aby tak učinily, a můžete to udělat pomocí html "
    "kategorie (Týmy zpráva subjekty podpora omezenou podmnožinu html). K tomu, můžete nahradit řádku ve $body proměnná s html <br> kategorie, jako je tento: $Body = $Body.Replace("`r`n", "<br>").

Všimněte si, že vám chybí "Metoda" parametr na své Invoke-RestMethod příkaz.

Tady je poslední pracovní kód, včetně výše:

$Body = get-content -Path "C:\temp\result.list" -Raw

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

$JSONBody = [PSCustomObject][Ordered]@{
    "@type"      = "text/plain"
    "@context"   = "http://schema.org/extensions"
    "summary"    = "Incoming Alert Test Message!"
    "themeColor" = '0078D7'
    "title"      = "Incoming Alert Test Message!"
    "text"       = "$Body"
}

$TeamMessageBody = ConvertTo-Json $JSONBody -Depth 100

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

Invoke-RestMethod @parameters

Tak, že se bude dát aspoň ty konce řádků. Pokud chcete zachovat "Tabulky" styl formátování, pak bych navrhnout pomocí Adaptivní Karet spíše, možná něco jako FactSet. Můžete se naučit, jak poslat Adaptivní Karty zde, a zde je ukázka karty pomocí FactSet, ale budete muset procházet řádky a vybudovat FactSet a Adaptivní Karty, takže doufejme, že dřívější řešení je dostačující.

2021-11-23 18:38:02

@olti - měl byste, prosím, potvrdit, jestli váš problém je vyřešen s výše návrh, nebo stále hledá nějakou pomoc?
ChetanSharma-msft

mohl by někdo navrhnout mi, jak procházet řádky a vybudovat FactSet a Adaptivní Kartu?Cílem je získat pro každého "DisplayName" samostatné Adaptivní Kartu?
olti

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................