Exchange Abwesenheitsbenachrichtigung (Out of office reply) nur an bekannte Absender zuslassen

Problem

Exchange-Absenheitsbenachrichtigungen (Out of Office replys) sind traditionell ein schwerwiegender Punkt interessanter Diskussionen. Technisch simpel umgesetzt, birgt das Konzept viele Gefahren für schweren Mißbrauch (Amplification-Attack, Spam, Datenschutz, Überwachung, Einbruch …).

Ein oft eingesetzer Kompromiss ist der Versand nur an „bekannte“ Absender. Da dem Exchange aber nicht alle Absender „bekannt“ sind (Exchange kann nachvollziehbarerweise nicht in Echtzeit alle Kontakte in allen Mailboxen durchsuchen) muss das pro Mailbox passieren. Outlook sieht diese Möglichkeit sinnvollerweise auch (als Mailboxsetting) vor. Leider bleibt die Auswahl weiterhin dem „fehleranfälligen“ Benutzer überlassen.

Nur in Outlook: „Jeder außerhalb meiner Organisation“ ist weiterhin anwählbar

Lösung

Die die Einstellung Serverseitig, also pro Mailbox, definiert ist, hilft hier eine Gruppenrichtlinie (GPO) nicht weiter. Diese würde vielleicht Outlook betreffen, aber von OWA und allen anderen E-Mail-Clients ignoriert werden.

Da diese Einstellung aber Pro-Exchange-Mailbox gesetzt wird, kann man via Powershell die gesetzte Einstellung relativ einfach „korrigieren“. Wir haben dazu dieses Script erstellt, das nebenbei auch den „Powershell state: busy“ Fehler umgeht, der auftritt wenn man zu viele Requests an die Exchange-API gleichzeitig sendet (foreach statt einfach |set).

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://MEINSERVER.MEINFQDN/PowerShell/ -Authentication Kerberos
Import-PSSession $Session -AllowClobber
Import-Module ActiveDirectory -ErrorAction STOP

Function ChangeMailboxListWithExternalAudience {
    $MailboxListWithExternalAudience = Get-Mailbox | Get-MailboxAutoReplyConfiguration | where { ($_.AutoReplyState -eq "Enabled") -AND ($_.ExternalAudience -eq "All") }

    foreach ($eintrag in $MailboxListWithExternalAudience) { 
        Set-MailboxAutoReplyConfiguration $eintrag.Identity -ExternalAudience "Known"
    }
}

ChangeMailboxListWithExternalAudience

Das Script wird einfach regelmäßig via „Geplante Aufgaben“ ausgeführt und rediziert so die Angriffsfläche auf einen (relativ) kleinen zeitlichen Versatz.

Bein Einsatz des Scripts auf die ExecutionPolicy achten!

Microsoft „Teams“ mittels Gruppenrichtlinie aus dem Autostart entfernen oder hinzufügen

Teams ist der neue Hauptclient für eine schnelle und intelligente Kommunikation in Office 365 und ersetzt grade mit Lichtgeschwindigkeit Skype for Business (Online). Leider setzt Microsoft das grade etwas ungeschickt um und verteilt den Teams Client in Office-Updates mit konfigurierter Autostart-Option.

Teams aus Autostart entfernen (GPO)

Notwendig ist die Erstellung und Verknüpfung einer Gruppenrichtlinie, die den unerwünschten RUN-Eintrag aus der Registry der Benutzern entfernt.

GPO erstellen, dann unter Benutzerkonfiguration > Einstellungen > Windows-Einstellungen > Registrierung > Neu:

Aktion:         Löschen 
Struktur:       HKEY_CURRENT_USER 
Schlüsselpfad:  SOFTWARE\Microsoft\Windows\CurrentVersion\Run 
Wertname:       com.squirrel.Teams.Teams 

Teams zu Autostart hinzufügen

Das Hinzufügen funktioniert genauso – nur mit der Aktion „Erstellen“. Der zugehörige Befehl lautet allerdings anders als das original.

Original (funktioniert NICHT)
C:\Users\%username%\AppData\Local\Microsoft\Teams\Update.exe --processStart "Teams.exe" --process-start-args "--system-initiated"
So funktioniert es:

C:\Users\%username%\AppData\Local\Microsoft\Teams\Update.exe --processStart "Teams.exe" --process-start-args "--user-initiated" 

Windows 10 1809 Websuche im Startmenü abschalten

Diese blöde unnütze Websuche im Windows 10 Startmenü ist deutlich häufiger lästig als hilfreich. Natürlich gibt es keine Möglichkeit, diese in der Systemsteuerung auszuschalten.

So gehts:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Search]
"BingSearchEnabled"=dword:00000000

Powershell Scripts starten in der Aufgabenplanung nicht (Ergebnis 0x1)

Problem

Im Taskplaner (Aufgabenplanung) angelegte Powershell-Scripte (*.ps1) starten trotz „richtigem“ Aufruf (%System32%\WindowsPowerShell\v1.0\powershell.exe …) nicht und geben das Ergebis 0x1 zurück

Lösung

Meistens ist die ExecutionPolicy schuld. Mal ist es der 32bit-Powershell-Interpreter, dann wieder 64bit. Die Aufgabenplanung startet per Default x64, aber beide Interpreter haben eigene Policys. Es kann auch eine lokale- oder nichtlokale Profileinstellung sein oder Policy-Changes nach einem Update Es gibt viele Ursachen. Es hat sich daher bewährt, die Policy pro Script zu umgehen:

powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File \\<SERVER>\<FREIGABE>\<SCRIPT>.ps1

-NoProfile Stell sicher, das das Script ohne ein lokales Profil ausgeführt wird und somit immer „kollisionsfrei“ bleibt. Außerdem vermeidet man so den langsamen Overhead sämtlichen Profilcodes/aliases/Snipplets/Imports.
-NoLogo Lässt das Startlogo weg. Hilfreich wenn man den vollständigen Output umleitet. Und total gut fürs Admin-Gefühl.
-NonInteractive Umgeht Wartezeiten für Benutzereingaben, indem es letztere weglässt; genauer: durch ein ‚exit 100‘ ersetzt. Das Script hängt also nicht mehr bei Prompts, sondern beendt siche selbst mit dem Fehler 0x100.
-ExecutionPolicy Bypass Umgehen die lokale Executionpolicy. ‚unrestricted‘ ist natürlich ebenfalls möglich. Wir empfehlen aber ‚Bypass‘, weil das Probleme mit globalen Konfigurationsänderungen der Policys (jetzt und in Zukunft) umgeht.

Windows 10 1803/1809 Performance via PowerCfg wieder maximieren

Seit dem Update 1803 von April 2018 gibt es in der Standartmäßig aktiven Energieeinstellung „Ausbalanciert“ einige Änderungen. Viele davon sind sehr klever gewählt, einige aber weniger. Eine führt beispielsweise dazu, das die CPU nur bei längeren Leistungsanforderungen (mehrere Sekunden) in einen schnelleren Gang schaltet. Je nach Applikation ist dieses Verhalten eher suboptimal; Dinge ruckeln plötzlich oder bestimmte Vorgänge dauern einfach länger. Bekannte Vertreter dieses Verhaltens sind RAW-Tools, Filterprogramme oder Index-Sortiervoränge.

Glücklicherweise kann man aber mit der Einstellung „Ultimate Performance Mode“ die ganze volle Arbeitsgeschwindigkeit zurückbekommen.

An der Kommandozeile (PowerCFG) erstellt man eine endlich wieder sichtbare Profilkopie mit:

powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61

Da PowerCfg.exe kein PowerShell Befehl ist, reicht in diesem Fall die „als Administrator“ gestartete Eingabeaufforderung (cmd).

Danach muss man in den Energieeinstellungen nur noch den Modus „Ultimative Leistung“ auswählen.

An der Kommandozeile kann man das entsprechende Schema ebenfalls auswählen und auch alle existierenden Schemata anzeigen.

powercfg -l  // Alle Energiesparpläne Anzeigen
PowerCfg -s <GUID>  // In GUID Energiesparplan wechseln.