Zum Inhalt
Home » PowerShell / Win32 Log to Teams – Intune

PowerShell / Win32 Log to Teams – Intune

Intune log to Teams

Wenn eine Win32 App Installation via Intune fehlschlägt, ist es nicht immer ganz einfach, das Log einzusehen. Darum habe ich begonnen, bei ausgewählten Installationen das Log der Win32-Instalaltion oder eines mit Intune verteilten PowerShell Scripts an einen Teams Kanal zu senden, umso eine schnelle Übersicht des Installationsprozess auf einem Gerät zu haben. Für das Senden des Logs verwende ich einen «Incoming Webhook», welchen ich auf dem Teams Kanal aktiviert habe.

Inhaltsverzeichnis

Webhook in Teams einrichten

Als Grundvoraussetzung muss du in dem Teams Kanal, in welchem du die Nachriten erhalten möchtest, den «Incoming Webhook» aktivieren. Dies ist eine URL, über welche wir Konversationen an den Kanal senden können, dies ohne Authentifizierung. Darum achte darauf, dass die URL nicht publik wird und du keine heiklen Daten darüber versendest.

Den Webhook richtest du über die drei Punkte im Kanal unter «Connectors» ein. In diesem Menü wählst du dann beim Punkt «Incoming Webhook» zweimal «Add» aus.

Teams channel, Connectors
add Connector
add Connector

Ist der «Incoming Webhook» als Connector hinzugefügt, können wir ihn konfigurieren. Dazu gehen wir im Kanal erneut in die «Connectors». Dieses Mal sehen wir nicht mehr «Add», sondern «Configure» und können dem «Incoming Webhook» einen Namen und wenn gewünscht auch ein Anzeigebild verpassen. Das Anzeigebild wird später beim Erstellen von Unterhaltungen angezeigt.

Nach dem Klick auf «Create» erscheint die URL, welche wir später in unserem Skript benötigen.
Kopiere dir diese heraus.

Alternativ die Anleitung von Microsoft: Create an Incoming Webhook – Teams | Microsoft Docs

Webhook Nachricht mit PowerShell senden

Um einen Webhook abzusetzen, brauchen wir nicht sehr viele Parameter. Untenstehend ein Beispiel Code inklusive Resultat im Team Kanal. Den Code kannst du testweise auch in einem x-beliebigen PowerShell Terminal absenden. Du musst dazu nur in der ersten Linie deine Webhook URL einfügen.

$WebHookURL = "https://xxxxx.webhook.office.com/webhookb2/someid..." $Message_Json = [PSCustomObject][Ordered]@{ "@type" = "MessageCard" "@context" = "<http://schema.org/extensions>" "themeColor" = "0078D7" "title" = "Test" "text" = "some message..." } | ConvertTo-Json $parameters = @{ "URI" = $WebHookURL "Method" = 'POST' "Body" = $Message_Json "ContentType" = 'application/json' } Invoke-RestMethod @parameters
Codesprache: Power Shell (powershell)
Incoming Webhook Teams

Installations-Transkript an Teams senden

Möchtest du das ganze Transkript / Log einer Intune Win32-App Installation oder eines PowerShell Scrips an Teams senden, kannst du folgende Vorlage verwenden. Setze dazu deine Installationsroutine unter «# Paste in your Installation routine here» ein. Vergiss auch nicht, den Parameter «$WebHookURL» anzupassen.

$Transcript_Path = "$env:TEMP\demo-installation.log" Start-Transcript $Transcript_Path # Paste in your Installation routine here Stop-Transcript $WebHookURL = "https://xxxxx.webhook.office.com/webhookb2/someid..." $Message_Json = [PSCustomObject][Ordered]@{ "@type" = "MessageCard" "@context" = "<http://schema.org/extensions>" "themeColor" = "0078D7" "title" = "Transcript - Demo" "text" = "<pre>$($(Get-Content $Transcript_Path) -join '<br>')</pre>" } | ConvertTo-Json $parameters = @{ "URI" = $WebHookURL "Method" = 'POST' "Body" = $Message_Json "ContentType" = 'application/json' } Invoke-RestMethod @parameters
Codesprache: Power Shell (powershell)
Teams incoming webhook, PowerShell transcript

Installations-Error an Teams senden

Für das Senden eines Error-Logs verwenden wir wieder dieselbe Basis wie oben. Dieses Mal Packen wir die Installationsroutine aber nicht in ein Transkript, sondern in ein «Try/Catch».

try{ # Paste in your Installation routine here }catch{ $WebHookURL = "https://xxxxx.webhook.office.com/webhookb2/someid..." $Message_Json = [PSCustomObject][Ordered]@{ "@type" = "MessageCard" "@context" = "<http://schema.org/extensions>" "themeColor" = "ff0000" "title" = "Error - DEMO - $($env:computername) - $env:username" "text" = "<pre>$($($_ | Format-List * -Force | Out-String) -join '<br>')</pre>" } | ConvertTo-Json $parameters = @{ "URI" = $WebHookURL "Method" = 'POST' "Body" = $Message_Json "ContentType" = 'application/json' } Invoke-RestMethod @parameters }
Codesprache: Power Shell (powershell)
Teams webhook PowerShell script error catch

4 Gedanken zu „PowerShell / Win32 Log to Teams – Intune“

  1. Hi, When you mention #Paste in your Installation routine here, exactly what routine do you mean, can you give an example, I don’t understand what you mean.

    Thanks and great article.

    1. This can be everything you have in an existing win32-package.
      For example, for installing an EXE:
      (Start-Process ‹your.exe› -ArgumentList ‹/quiet /norestart› -Wait -Passthru).ExitCode

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht.