yotyot
Goto Top

Bedingte Formatierung im Outlook Kalender zentral vorgeben

Moin! sag i und das am Abend. So sind's, die Nordlichter!

Hat jemand eine Idee, wo bei Outlook 2016 / Exchange 2016 die Informationen zu bedingten Kalenderformatierungen gespeichert werden? Oder besser noch: weiß jemand, wie man die zentral vorgeben kann? Etwa per GPO oder PS? Oder meinetwegen auch in einer Datei, die ich dann per GPO in jedes Profil kopiere?

Hintergrund ist ein Kunde, der genau das wünscht: Termin mit Meier soll rot, Termin mit Müller grün und Termin mit Schulze soll blau werden. Da sich so etwas aber gelegentlich ändert, weil mal neue Meiers und Müllers dazukommen, ist es natürlich müßig, das bei jedem User immer wieder manuell zu machen, zumal es firmenweit gleich sein soll. Wäre bei 10 Usern nicht so das Ding, aber das sind ein paar mehr.

Die Infos, die die Suchmaschine meiner Wahl mir bisher so geliefert hat, sind leider wenig ergiebig: Outlook 2010 funktioniert noch etwas anders als 2016 und wie und wo ich das in Outlook manuell einstelle, weiß ich auch. Sobald ich aber "zentral", "GPO", "Gruppenrichtlinie" oder "Powershell" mit in die Suche einbeziehe, bekomme ich wieder haufenweise Antworten mit fehlenden Suchwörtern. Hat vielleicht jemand bessere Suchwörter für mich?

Euch in jedem Fall einen fluffigen Feierabend und Danke für's Hirn zerbrechen face-wink

Jörg

Content-Key: 361603

Url: https://administrator.de/contentid/361603

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: Criemo
Criemo 18.01.2018 um 21:55:32 Uhr
Goto Top
Hallo Jörg,
eine Zentrale Möglichkeit gibt es hier leider nicht so ohne weiteres, da die Bedingte Formatierung in der lokalen PST/OST gespeichert werden.
Heiß für dich selbst wenn du es lokal am Client einrichten würdest und aus irgendeinem Grund die PST/OST defekt ist und die sie neu aufbauen lassen müsstest wären auch die Informationen zur Bedingten Formatierung weg und müssten neu erstellt werden.

VG
Criemo
Mitglied: YotYot
YotYot 19.01.2018 um 08:28:52 Uhr
Goto Top
Hi Criemo,

da hier ein Exchange dahinter steht, gibt es weder PST noch OST (abgeschaltet), folglich müsste das also im Postfach im Exchange liegen. So jedenfalls erzählt mir das meine Logik. Das bringt mich im Moment nicht weiter, also sinniere ich mal um die Ecke:

Ich kann eine solche bedingte Formatierung doch auch mit VBA in Outlook machen. Nun weiß ich, dass man Excel zum Beispiel mit Powershell bedienen kann, das sollte mit Outlook demzufolge auch gehen. Klappt das auch mit Powershell? Also: dem User-Outlook ein VBA-Script einpflanzen?
Ich gehe da mal auf die Suche. Sollte hier jemand eine Idee dazu haben, immer her damit. Finde ich anderweitig eine Lösung, lasse ich es Euch wissen (meistens mit viel Verspätung face-wink ).

VG
Jörg
Mitglied: colinardo
Lösung colinardo 19.01.2018, aktualisiert am 06.03.2020 um 12:02:34 Uhr
Goto Top
Servus Jörg,
die Regeln werden in den Ansichten des Clients gespeichert also im Client-Profil. Jeder Kalender kann eigene Ansichten und damit Einstellungen haben. Diese Einstellungen kannst du hier nur durch ein Skript am Client umstellen. Das geht auch problemlos mit Powershell.

Hier mal ein Skript das vordefinierte Bedingungen am Client in der aktuellen Standardansicht des Default Kalenders des Users einträgt. Bei nicht Vorhandensein der Regel wird sie angelegt, ist sie vorhanden werden nur die Eigenschaften aktualisiert.

Die Regeln werden in der Hashtable $settings abgelegt, könnten aber auch problemlos aus einer CSV /XML oder sonstigen Datenquelle eingelesen werden.
Die Filter-Syntax musst du dir aus den Regeln holen die du dir schon angelegt hast (per VBA oder Powershell)
# mögliche Farben
$colors = @{
    olCategoryColorBlack=15
    olCategoryColorBlue=8
    olCategoryColorDarkBlue=23
    olCategoryColorDarkGray=14
    olCategoryColorDarkGreen=20
    olCategoryColorDarkMaroon=25
    olCategoryColorDarkOlive=22
    olCategoryColorDarkPeach=18
    olCategoryColorDarkPurple=24
    olCategoryColorDarkRed=16
    olCategoryColorDarkSteel=12
    olCategoryColorDarkTeal=21
    olCategoryColorDarkYellow=19
    olCategoryColorGray=13
    olCategoryColorGreen=5
    olCategoryColorMaroon=10
    olCategoryColorNone=0
    olCategoryColorOlive=7
    olCategoryColorOrange=2
    olCategoryColorPeach=3
    olCategoryColorPurple=9
    olCategoryColorRed=1
    olCategoryColorSteel=11
    olCategoryColorTeal=6
    olCategoryColorYellow=4
}

# Regeln die erstellt/modifiziert werden sollen
$settings = @{
    "Testregel" = @{  
        Color=$colors.olCategoryColorBlack
        Filter="`"http://schemas.microsoft.com/mapi/proptag/0x0037001f`" LIKE '%Testsubject%'"  
    }
    "Testregel 2" = @{  
        Color=$colors.olCategoryColorRed
        Filter="`"http://schemas.microsoft.com/mapi/proptag/0x0037001f`" LIKE '%Testsubject2%'"  
    }
}

# get outlook com-object
[void][reflection.assembly]::LoadWithPartialName("microsoft.visualbasic")  
$objOL = [microsoft.visualbasic.interaction]::GetObject($null,"Outlook.Application")  
if (!$objOL){$objOL = New-Object -Com Outlook.Application}


$objOL.GetNamespace("MAPI").GetDefaultFolder(9).Views | ?{$_.Name -match '^(Kalender|Calendar)$'} | %{  
    $rules = $_.AutoFormatRules
    $rulenames = $rules | ?{!$_.Standard} | select -Expand Name
    $settings.GetEnumerator() | %{
        if ($_.Name -in $rulenames){
            write-host "Changing Rule '$($_.Name)'" -F Green  
            $key = $_.Name
            $rule = $rules | ?{$_.Name -eq $key}
            $rule.Filter = $_.Value.Filter
            $rule.Font.ExtendedColor = $_.Value.Color
            $rule.Enabled = $true
        }else{
            write-host "Adding Rule $($_.Name)" -F Green  
            $rule = $rules.Add($_.Name)
            $rule.Filter = $_.Value.Filter
            $rule.Font.ExtendedColor = $_.Value.Color
            $rule.Enabled = $true
        }
    }
    $_.AutoFormatRules.Save()
    $_.Save()
}
$objOL.Quit()
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($objOL)
Achtung wichtiger Hinweis: Je nach Outlook-Version kann es vorkommen das der Bedingungsdialog der modifizierten/angelegten Regeln nicht die tatsächlichen aktuellen Einstellungen widerspiegelt. Das ist ein Bug von Outlook aber das verhindert nicht das die Regel korrekt angewendet wird, denn im Hintergrund ist die korrekte Regel hinterlegt und gespeichert.

Noch ein Hinweis für die Filter-Property in der $settings Hashtable. Dort müssen Anführungszeichen mit Backtick escpaped werden, natürlich nur wenn du es direkt im Skript eintragen willst, wenn es über CSV/XML eingelesen werden soll ist das kein Problem.

Grüße Uwe
Mitglied: YotYot
YotYot 16.04.2018 um 10:29:56 Uhr
Goto Top
Moin Uwe,

nachdem jetzt Jahreswechsel, Resturlaub, Lungenentzündung und ein Katastrophenkunde, bei dem alle Fehler und Probleme aufgetreten sind, die es gibt, abgefrühstückt sind: Jepp, Dein Script ist jetzt nach ein paar Anpassungen die Basis für die Kundenzufriedenheit. Danke, hat uns echt von Stress befreit face-smile

Grüße aus dem Norden

Jörg
Mitglied: colinardo
colinardo 16.04.2018 aktualisiert um 11:13:41 Uhr
Goto Top
Freut mich zu hören. face-smile

Beste Grüße aus Kasachstan wo sich Hase und Igel bald gut Nacht sagen face-wink

Uwe
Mitglied: Dave57
Dave57 03.07.2019 um 14:01:12 Uhr
Goto Top
Hallo!

Erstmal vielen Dank für die Bereitstellung des Skripts. Ich stehe vor einer ähnlichen Situation und bin auf ein Problem gestoßen.

Ich habe das Skript ausgeführt, das Skript erstellt auch brav die zwei Testregeln. Die konnte ich unter "Bedingte Formatierungen" in Outlook sehen.

Allerdings nimmt er die Bedingung nicht mit. Ich habe am Skript nichts verändert außer "Testsubject" in "Test" geändert...Anschließend eine Termin Einladung mit dem Betreff "Test" geschickt und dann bin ich auf das Problem gestoßen...

Auch wenn der Thread sehr alt ist, hat vielleicht jemand eine Idee?

Danke und Gruß!
Mitglied: colinardo
colinardo 03.07.2019 aktualisiert um 14:21:27 Uhr
Goto Top
Servus.
Zitat von @Dave57:
Ich habe das Skript ausgeführt, das Skript erstellt auch brav die zwei Testregeln. Die konnte ich unter "Bedingte Formatierungen" in Outlook sehen.

Allerdings nimmt er die Bedingung nicht mit. Ich habe am Skript nichts verändert außer "Testsubject" in "Test" geändert...Anschließend eine Termin Einladung mit dem Betreff "Test" geschickt und dann bin ich auf das Problem gestoßen...

Folgenden Hinweis von mir oben lesen

Achtung wichtiger Hinweis: Je nach Outlook-Version kann es vorkommen das der Bedingungsdialog der modifizierten/angelegten Regeln nicht die tatsächlichen aktuellen Einstellungen widerspiegelt. Das ist ein Bug von Outlook aber das verhindert nicht das die Regel korrekt angewendet wird, denn im Hintergrund ist die korrekte Regel hinterlegt und gespeichert.

Grüße Uwe
Mitglied: Dave57
Dave57 03.07.2019 um 14:26:40 Uhr
Goto Top
Vielen Dank für die schnelle Antwort!

Okay, das hatte ich nicht bedacht. Dann kann ich dies nicht als Gegenprüfung verwenden.
Ich habe wie gesagt mit den Testregeln in deinem Skript bearbeitet und nur den Betreff geändert. Leider färben sich trotzdem alle Termine mit der Farbe der Testregel2, also rot face-sad


Gruß
Mitglied: colinardo
colinardo 03.07.2019 aktualisiert um 14:44:23 Uhr
Goto Top
Zu wenig Info zur Umgebung, klappt hier testweise einwandfrei Outlook 2019 Pro.
Weitere Diskussion diesbezüglich bitte => PN . Damit der Thread auch im Sinne des TO nicht zugemüllt wird. DANKE!