Warum das Blockieren bestimmter TLDs die Sicherheit deines Postfachs massiv erhöht

Das gezielte Blockieren ausgewählter Top-Level-Domains (TLDs) ist eine der effektivsten Maßnahmen, um Phishing‑ und Spam‑Wellen frühzeitig auszubremsen.

Viele missbräuchlich genutzte Domains werden in Ländern registriert, in denen anonyme, günstige und schnell verfügbare Registrierungen möglich sind. Mit einer Mailflow‑Regel, die problematische TLDs am „From“-Header abfängt, reduzierst du sofort den Rauschteppich im Posteingang, entlastest Schutzmechanismen wie Safe Links und verringerst den Druck auf Benutzer, ständig zwischen legitimen und betrügerischen Mails unterscheiden zu müssen.

Eine kurze Audit‑Phase, plus gepflegte Allowlist, sorgt dafür, dass legitime Partner nicht fälschlich blockiert werden – bei gleichzeitig deutlich spürbarem Sicherheitsgewinn.

Wie die Regel technisch funktioniert – kurz erklärt

Die TLD‑Block‑Regel greift direkt im Exchange Online Mailflow, also an einer Stelle, an der eingehende E‑Mails zum ersten Mal geprüft werden. Dabei wird ausschließlich externer Traffic betrachtet – interne Nachrichten bleiben außen vor. Kern der Logik ist der Blick in den sichtbaren „From“-Header der E-Mail: Dort prüft Exchange mithilfe von regulären Ausdrücken, ob die Absenderadresse mit einer bestimmten Top-Level-Domain endet, etwa .ru, .cn oder .xyz.

Treffen diese Muster zu, wird die Mail sofort abgelehnt, bevor sie irgendein Postfach erreicht oder andere Sicherheitsebenen belastet. Das verhindert effektiv, dass Phishing oder Spam überhaupt im Unternehmen ankommt. Für legitime Partner lassen sich gezielte Ausnahmen hinterlegen, sodass wichtige Kommunikation nicht blockiert wird.

Dank eines optionalen Audit-Modus kannst du die Regel zunächst beobachten, ohne aktiv Mails zu verwerfen. Sobald klar ist, dass keine falschen Treffer auftreten, wird die Regel scharf geschaltet – und sorgt ab diesem Moment für deutlich mehr Ruhe und Sicherheit im Posteingang.

Die TLD‑Block‑Regel wirkt völlig unabhängig von SPF, DKIM und DMARC und verwirft Mails, bevor Authentifizierungsmechanismen greifen – genau dadurch reduziert sie den Aufwand, den Angreifer technisch korrekt signierte, aber dennoch bösartige Mails verursachen würden.

$patterns = @('\.ru$', '\.cn$', '\.xyz$', '\.tr$')

New-TransportRule -Name "Blockiere TLDs" -Priority 0  -FromScope NotInOrganizatio -HeaderMatchesMessageHeader "From" -HeaderMatchesPatterns $patterns -RejectMessageEnhancedStatusCode "5.7.1"

Hinweis/Disclaimer: Es erfolgt keine Garantie oder Gewährleistung für Funktion, Vollständigkeit oder Eignung in anderen Umgebungen.

**Stand:** 15.02.2026

KeePass‑Plugins automatisch aktuell halten – mein Setup in Kürze

Problem:

KeePass 2.x bringt keinen Mechanismus mit, um Plugins automatisch zu aktualisieren. Selbst wichtige Erweiterungen wie KeePassRPC (für die Browser‑Integration via „Kee“) melden zwar neue Versionen, doch das Einspielen muss manuell erfolgen.

Randbedingungen / Besonderheiten:

  • KeePassRPC wird zuverlässig über GitHub Releases ausgeliefert (z. B. v2.0.2 vom 12. Juni 2024).
  • KeeAutoExec ist offiziell gelistet und lässt sich unter Windows bequem über das Chocolatey‑Paket keepass-plugin-keeautoexec pflegen (verifizierte Pakettests).
  • GlobalSearch erweitert die Suche auf alle geöffneten KeePass‑Datenbanken; der Code liegt auf GitHub. [Keepass Pl…Seach.page | Loop]

Lösung: Ein Updater‑Skript + geplanter Task (ohne XML)

Ich nutze ein PowerShell‑Skript, das zwei Update‑Wege kombiniert:

  1. GitHub‑Releases prüfen und .plgx automatisch laden/aktualisieren (z. B. für KeePassRPC).
  1. Chocolatey‑Upgrade für KeeAutoExec (choco upgrade keepass-plugin-keeautoexec -y).

Dazu kommen Robustheits‑Details:

  • Sicherer Dateitausch inkl. Backup, optionales Stoppen/Neustarten von KeePass
  • Log‑Rollover und klare Fehlerlogs
  • Sorgfältige Klammerung/Interpolation, um typische PowerShell‑Parserfehler zu vermeiden

Die Automatisierung übernimmt ein geplanter Task, den ich per PowerShell‑Cmdlets (nicht per XML) registriere – das ist schema‑sicher und läuft beim Anmelden sowie täglich zur Wunschzeit mit höchsten Privilegien.


Was wird aktualisiert?

  • KeePassRPC (GitHub) – benötigt für die Browser‑Erweiterung Kee.
  • KeeAutoExec (Chocolatey) – öffnet definierte KeePass‑Datenbanken automatisch.
  • GlobalSearch (GitHub) – Suche über alle geöffneten DBs. [Keepass Pl…Seach.page | Loop]

Ergebnis

  • Zero‑Touch Updates meiner wichtigsten KeePass‑Plugins
  • Keine XML‑Frickelei: nur PowerShell
  • Nachvollziehbare Logs + Backups für schnelle Rollbacks
  • Einheitliche Pflege auf mehreren Systemen

🔧 Hinweis zur Anpassung (Vorlage erweiterbar)

Die Vorlage ist bewusst modular: Du kannst weitere Plugins hinzufügen (z. B. aus der offiziellen [KeePass‑Pluginliste]), entweder als GitHub‑Eintrag (Repo + Asset‑Filter) oder als Chocolatey‑Paket. Ebenso lassen sich Zeitpläne, Pfade (portable vs. installiert) und Benachrichtigungen (z. B. E‑Mail/Toast) unkompliziert erweitern.

hier das Updater Script


<#
KeePass Plugin Updater (bereinigt & produktiv)
Marko Fieber – 2026
#>

# ================================
# === Benutzer-Konfiguration  ====
# ================================

$KeePassExePath = "C:\Program Files\KeePass Password Safe 2\KeePass.exe"
$PluginDir      = "C:\Program Files\KeePass Password Safe 2\Plugins"

$WorkDir = "$env:ProgramData\KeePassPluginUpdater"
$LogFile = Join-Path $WorkDir "update.log"

$StopKeePassDuringUpdate = $true
$UsePreReleases = $false
$EnvGitHubToken = $env:GITHUB_TOKEN

$Plugins = @(
    @{
        Name         = "KeePassRPC"
        Repo         = "kee-org/keepassrpc"
        AssetPattern = "KeePassRPC\.plgx$"
        TargetFile   = "KeePassRPC.plgx"
    },
    @{
        Name         = "GlobalSearch"
        Repo         = "Rookiestyle/GlobalSearch"
        AssetPattern = "\.plgx$"
        TargetFile   = "GlobalSearch.plgx"
    },
    @{
        Name         = "KeeAutoExec"
        ChocoPackage = "keepass-plugin-keeautoexec"
        TargetFile   = "KeeAutoExec.plgx"
    }
)

# ================================
# === Hilfsfunktionen ============
# ================================

function Write-Log {
    param([string]$Msg, [string]$Level = "INFO")
    $ts = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
    $line = "[$ts] [$Level] $Msg"
    Write-Host $line
    Add-Content $LogFile -Value $line
}

function Ensure-Dirs {
    if (-not (Test-Path $WorkDir)) { New-Item -ItemType Directory -Path $WorkDir | Out-Null }
}

function Set-Tls12 {
    try {
        [Net.ServicePointManager]::SecurityProtocol =
            [Net.SecurityProtocolType]::Tls12 -bor
            [Net.SecurityProtocolType]::Tls11 -bor
            [Net.SecurityProtocolType]::Tls
    } catch {}
}

function Get-GitHubRelease {
    param([string]$Repo, [bool]$IncludePreRelease=$false)

    $headers = @{ "User-Agent" = "KeePassPluginUpdater" }
    if ($EnvGitHubToken) { $headers["Authorization"] = "Bearer $EnvGitHubToken" }

    $url = "https://api.github.com/repos/$Repo/releases"
    $resp = Invoke-RestMethod -Uri $url -Headers $headers -ErrorAction Stop

    if ($IncludePreRelease) { return ($resp | Select-Object -First 1) }
    return ($resp | Where-Object { -not $_.prerelease } | Select-Object -First 1)
}

function Stop-KeePass {
    if (-not $StopKeePassDuringUpdate) { return }
    $p = Get-Process KeePass -ErrorAction SilentlyContinue
    if ($p) {
        Write-Log "Beende KeePass..."
        $p | Stop-Process -Force
        Start-Sleep -Seconds 2
    }
}

function Start-KeePass {
    if ($StopKeePassDuringUpdate -and (Test-Path $KeePassExePath)) {
        Write-Log "Starte KeePass neu..."
        Start-Process $KeePassExePath | Out-Null
    }
}

function Backup-File {
    param([string]$FilePath)
    if (Test-Path $FilePath) {
        $backupDir = Join-Path $WorkDir "backups"
        if (-not (Test-Path $backupDir)) { New-Item -ItemType Directory -Path $backupDir | Out-Null }
        $stamp = (Get-Date).ToString("yyyyMMdd-HHmmss")
        $dest  = Join-Path $backupDir ("$(Split-Path $FilePath -Leaf).$stamp.bak")
        Copy-Item $FilePath $dest -Force
        Write-Log "Backup erstellt: $dest"
    }
}

function Download-Asset {
    param($Release, $Pattern)
    $asset = $Release.assets | Where-Object { $_.name -match $Pattern } | Select-Object -First 1
    if (-not $asset) { throw "Kein Asset gefunden, Pattern: $Pattern" }

    $dst = Join-Path $WorkDir $asset.name
    Write-Log "Lade herunter: $($asset.browser_download_url)"
    Invoke-WebRequest -Uri $asset.browser_download_url -OutFile $dst -UseBasicParsing
    return $dst
}

function Expand-IfArchive {
    param([string]$Path)
    if ([IO.Path]::GetExtension($Path) -eq ".zip") {
        $dir = Join-Path $WorkDir ([IO.Path]::GetFileNameWithoutExtension($Path))
        if (Test-Path $dir) { Remove-Item $dir -Recurse -Force }
        Expand-Archive -Path $Path -DestinationPath $dir
        return $dir
    }
    return $null
}

function Install-PluginFile {
    param([string]$Src, [string]$Target)

    $targetPath = Join-Path $PluginDir $Target
    Backup-File $targetPath
    Copy-Item $Src $targetPath -Force
    Write-Log "Installiert: $Target"
}

function Update-PluginViaChocolatey {
    param([string]$Pkg)

    $choco = Get-Command choco -ErrorAction SilentlyContinue
    if (-not $choco) { throw "Chocolatey nicht installiert." }

    Write-Log "Chocolatey-Update: $Pkg"
    Start-Process $choco.Source -ArgumentList "upgrade $Pkg -y --no-progress" -Wait -PassThru | Out-Null
}

# ================================
# === Ablauf =====================
# ================================

Ensure-Dirs
Set-Tls12

# Log-Rollover
if (Test-Path $LogFile) {
    $tooLarge = ((Get-Item $LogFile).Length -gt 5MB)
    if ($tooLarge) {
        Rename-Item $LogFile -NewName ("update_{0}.log" -f (Get-Date -Format "yyyyMMdd-HHmmss"))
    }
}

Write-Log "==== Start ===="

Stop-KeePass

foreach ($p in $Plugins) {
    $name = $p.Name
    Write-Log "Prüfe Plugin: ${name}"

    # Chocolatey-Plugins
    if ($p.ChocoPackage) {
        try {
            Update-PluginViaChocolatey $p.ChocoPackage
            $expected = Join-Path $PluginDir $p.TargetFile
            Write-Log ("Verifiziert: " + (Test-Path $expected))
        } catch {
            Write-Log "Fehler bei ${name}: $($_.Exception.Message)" "ERROR"
        }
        continue
    }

    # GitHub-Plugins
    try {
        $rel = Get-GitHubRelease -Repo $p.Repo -IncludePreRelease:$UsePreReleases
        if (-not $rel) {
            Write-Log "Kein Release für ${name}" "WARN"
            continue
        }

        $localFile = Join-Path $PluginDir $p.TargetFile
        $localHash = if (Test-Path $localFile) { (Get-FileHash $localFile).Hash } else { $null }

        $dl = Download-Asset -Release $rel -Pattern $p.AssetPattern
        $dir = Expand-IfArchive $dl
        $src = if ($dir) {
            (Get-ChildItem $dir -Recurse -Filter $p.TargetFile | Select-Object -First 1).FullName
        } else { $dl }

        $newHash = (Get-FileHash $src).Hash
        if ($localHash -eq $newHash) {
            Write-Log "${name} ist bereits aktuell."
            continue
        }

        Install-PluginFile -Src $src -Target $p.TargetFile
        Write-Log "${name} aktualisiert auf $($rel.tag_name)"
    }
    catch {
        Write-Log "Fehler bei ${name}: $($_.Exception.Message)" "ERROR"
    }
}

Start-KeePass
Write-Log "==== Fertig ===="

und hier das Script für den Task

# ==========================================
# KeePass Plugin Updater – Task Registration
# ==========================================

$TaskName   = "KeePass Plugin Updater"
$ScriptPath = 'C:\Program Files\KeePass Password Safe 2\Update-KeePassPlugins.ps1'
$WorkDir    = 'C:\Program Files\KeePass Password Safe 2'
$DailyTime  = [datetime]"09:15"
$UserId     = "$env:UserName"

# Action
$action = New-ScheduledTaskAction `
    -Execute 'powershell.exe' `
    -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$ScriptPath`"" `
    -WorkingDirectory $WorkDir

# Trigger: Beim Anmelden + täglich
$trLogon = New-ScheduledTaskTrigger -AtLogOn
$trDaily = New-ScheduledTaskTrigger -Daily -At $DailyTime

# Principal: höchste Privilegien
$principal = New-ScheduledTaskPrincipal `
    -UserId $UserId `
    -LogonType Interactive `
    -RunLevel Highest

# Settings
$settings = New-ScheduledTaskSettingsSet `
    -StartWhenAvailable `
    -AllowStartIfOnBatteries `
    -DontStopIfGoingOnBatteries `
    -ExecutionTimeLimit (New-TimeSpan -Hours 1) `
    -RestartCount 2 `
    -RestartInterval (New-TimeSpan -Minutes 5)

# Task zusammenbauen
$task = New-ScheduledTask -Action $action -Trigger @($trLogon, $trDaily) -Principal $principal -Settings $settings

# Vorher löschen, falls vorhanden
if (Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue) {
    Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
}

# Registrieren
Register-ScheduledTask -TaskName $TaskName -InputObject $task

Write-Host "Task erfolgreich registriert."

Hinweis/Disclaimer: Dieses Setup wurde erfolgreich auf einem Windows 11 System angewendet. Es erfolgt keine Garantie oder Gewährleistung für Funktion, Vollständigkeit oder Eignung in anderen Umgebungen.

**Stand:** 14.02.2026

existiert der 365 Tenant / Mandant noch?

Es gibt Momente, in denen es von entscheidender Bedeutung ist, zu überprüfen, ob ein Microsoft 365-Mandant noch existiert. Diese Überprüfung kann helfen, potenzielle Probleme frühzeitig zu erkennen und sicherzustellen, dass alle Dienste reibungslos funktionieren. Ein regelmäßiger Check kann nicht nur die Sicherheit und Integrität der Daten gewährleisten, sondern auch dazu beitragen, dass alle Benutzer weiterhin Zugriff auf die benötigten Ressourcen haben. In einer sich ständig verändernden digitalen Landschaft ist es unerlässlich, proaktiv zu handeln und sicherzustellen, dass der Mandant stets auf dem neuesten Stand ist.

Da die URL eines Microsoft 365-Tenants immer eine eindeutige Third-Level-Domain (Subdomain) von onmicrosoft.com enthält, kann der einfachste Check über die URL durchgeführt werden. Diese Methode ermöglicht eine schnelle und unkomplizierte Überprüfung, ob der Tenant noch existiert. Durch die Eingabe der spezifischen Subdomain in den Browser kann man sofort feststellen, ob der Tenant erreichbar ist. Dies ist besonders nützlich, um sicherzustellen, dass alle Dienste weiterhin verfügbar sind und keine unerwarteten Ausfälle auftreten.

Ein regelmäßiger Check der Tenant-URL kann somit dazu beitragen, die Kontinuität und Zuverlässigkeit der genutzten Microsoft 365-Dienste zu gewährleisten.

[Quelle 2025-02-19] Auf https://o365.rocks/ könnt Ihr diesen Check schnell durchführen

Tenant name availability check – Microsoft 365 Rocks

Off-Boarding von Hybrididentitäten mit Microsoft Entra ID

Im Kontext der „Hybrididentität mit Microsoft Entra ID“ bezieht sich die Synchronisation von Identitäten (Benutzer, Gruppen, Geräte, Kontakte und öffentliche Ordner) auf die Verbindung zwischen dem lokalen Verzeichnisdienst eines Microsoft Netzwerks (Active Directory, AD) und dem Verzeichnisdienst der Microsoft Cloud (früher Azure AD, jetzt Microsoft Entra).

Wenn aktive Identitäten, die sich im Identitäts-Hybrid befinden, im lokalen AD gelöscht werden, kann es zu verwaisten Identitäten in der Microsoft Cloud (orphaned objects in Azure AD) kommen, was grundsätzlich vermieden werden sollte.

Ein klar definierter Prozess bzw. Workflow „Off-Boarding von Identitäten im Identitäts-Hybrid“ kann hier Abhilfe schaffen. Dieser sieht wie folgt aus:

  1. Entfernen der Identität aus dem Identitäts-Hybrid.
  2. Abwarten eines Synchronisations-Intervalls des Identitäts-Hybrids.
  3. Danach kann die lokale Identität problemlos gelöscht werden.

Wie könnt ihr verwaiste Identitäten erkennen?

  • Über die Verwaltungswebseite Directory sync errors im Microsoft 365 Admin Center.
  • Per PowerShell-Befehl: Get-MsolDirSyncProvisioningError -ErrorCategory PropertyConflict.
  • Über den Synchronization Service Manager.

Wie könnte Ihr die verwaisten Identitäten entfernen

hier würde ich gerne auf eine externe Quelle verweisen, die das ausführlich beschreibt

Quelle [16.1.2024] https://janbakker.tech/how-to-deal-with-orphaned-objects-in-azure-ad-connect/

RDCMan Error > There ware problems decrypting some credentials

Der Remote Desktop Manager (RDCMan) von Microsoft ist ein praktikables und kostenloses Tool von Microsoft, um mehrere Remote-Desktop-Verbindungen zu verwalten.

Leider gibt es Probleme beim verschlüsseln von Sub-Account und es kommt zu folgender Fehlermeldung

folgenden Workflow haben ich im Netz gefunden, um das Problem zu beheben

Fortunately the fix is to edit the configuration files and strip out the credentials:

  1. Close Remote Desktop Connection Manager
    1. if you don’t close RDC Manager first, your changes will not stick
  2. Right click on any RDG file and open it with your favorite plain text editor like Notepad or Notepad++
  3. Delete everything between <CREDENTIALSPROFILES> and </ CREDENTIALSPROFILES>
  4. Save the file
  5. Be happy

Quelle [26.07.2024] SOLVED: VIDEO: Fix RDCMan Error – Problems Decrypting Some Credentials – Up & Running Inc – Tech How To’s (urtech.ca)

Zurücksetzen des Software Key von Windows Hello for Business (WHfB)

Windows Hello bzw. for Business macht Passwörter überflüssig. Hierzu werden PIN’s, Zertifikate, FIDO2 oder Biometrische Anmeldeoptionen eingerichtet. Windows Hello ist für den Privathaushalt und Windows Hello for Business (WHfB) eine managebare Lösung für den Business Bereich.

Bei WHfB wird ein Key erzeugt und im Fall, dass es ein Software Key ist, wird der Key in einem Container des lokalen Zertifikatsmanagement hinterlegt. Manchmal ist es Notwendig den WHfB Container für den Anwender auf dem Rechner zurückzusetzen.

folgender Befehlt macht das möglich > certutil -DeleteHelloContainer

Hier zwei Quellen [2024-05-04] zu dem Thema:

Energie-Kosten im Haushalt verstehen

wie in der nachfolgenden Abbildung zu erkennen ist, liegen die Energie-Kosten für einen Computer zwischen 32,70 € – 163,52 € im Jahr, nun gibt es aber ja auch noch andere Geräte im Haushalt und die Kosten multiplizieren sich.

fdgfdgfdg
[Quelle 2024-05-04] Stromkosten im Alltag – der große Vergleich (stromverbrauchinfo.de)

Auf folgender Seite (Stromkosten im Alltag – der große Vergleich (stromverbrauchinfo.de) kann man sich schnell und einfach eine Überblick über mögliche Kosten machen, die durch Elektrische Geräte im Haushalt erzeugt werden.

Hier mal eine triviale Beispielrechnung für einen Singlehaushalt mit minimaler Ausstattung

Beispielminimalmaximaldurchschnitt
Was kostet Fernsehen?1 x TV im Haushalt3,04 €204,40 €103,72 €
Stromkosten für einen Computer?2 x PC im Haushalt65,40 €327,04 €196,22 €
Was kostet Wäschewaschen?1 x waschen pro Woche10,50 €20,24 €15,37 €
Was kostet Wäschetrocknen?1 x trocknen pro Woche20,68 €65,37 €43,03 €
Was kostet Licht?Glühlampen a 6h15,33 €61,32 €38,31 €
Stromkosten für einen Kühlschrank?1 Kühlschrank23,51 €124,68 €74,10 €
466,75 €
aktuell verbrauche ich als Singlehaushalt mit viel Homeoffice als IT’ler lt. Energieversorger, wobei ich schon auf unnötigen Verbrauch achte, ca. 1500 kWh, was meiner Beispielrechnung nah kommt
lt. Statistik liegen ich also mit meinem Verbrauch zwischen gering und normal, was mich schon ein bisschen Stolz macht, aber ausbaufähig ist

Wer gerne seine IT bzgl. Energie-Verbrauch optimieren möchte, dem empfehle ich folgenden Artikel zu lesen > Stomsparender, energieeffizienter PC – Anleitung und Tipps zum Aufbau (stromverbrauchinfo.de)

Throttling and Blocking Email from Persistently Vulnerable Exchange Servers to Exchange Online

neuerdings häufen sich die Meldungen, dass der E-Mailverkehr zwischen Exchange OnPrem (also lokal installierte Exchange Server) und Exchange Online geblockt werden. Folgende Meldungen tauchen auf

450 4.7.230 Connecting Exchange server version is out-of-date; connection to Exchange Online throttled for 5 mins/hr. For more information see https://aka.ms/BlockUnsafeExchange.

550 5.7.230 Connecting Exchange server version is out-of-date; connection to Exchange Online blocked for 10 mins/hr. For more information see https://aka.ms/BlockUnsafeExchange.

Hintergrund: der Exchange OnPrem ist in den meisten Fällen End of Life, also ist von Microsoft abgekündigt

Quelle 2024-03-24 : Throttling and Blocking Email from Persistently Vulnerable Exchange Servers to Exchange Online – Microsoft Community Hub

AIP Client bzw. Microsoft Information Protection Client Fehler in Version 2.17.66.0

beim öffnen des Clients über das Kontextmenü der Maus oder wie auch immer, wird die die View des Clients verzerrt so das er unbrauchbar ist.

Quelle die das bestätigt [2024-03-07] : Microsoft Information Protection Client – Fehler bei der Januar Version – RaKöllner (rakoellner.de)

Schnelle Lösung: ein Rollback auf die alte Version

EnableMIPLabels

Azure Information Protection (AIP) für Microsoft 365-Gruppen und SharePoint-Websites lässt sich nicht aktivieren (EnableMIPLabels)

EnableMIPLabels
Darstellung des Problems

mit folgenden Powershell Schnipsel könnt Ihr die Option „EnableMIPLabels“ auf „Group.Unified“ aktivieren

Status abfragen
$grpUnifiedSetting = (Get-AzureADDirectorySetting | where -Property DisplayName -Value "Group.Unified" -EQ)
$Setting = $grpUnifiedSetting
$grpUnifiedSetting.Values
wenn EnableMIPLabels = false
$Setting["EnableMIPLabels"] = "True"
#prüfen
$Setting.Values
#speicher
Set-AzureADDirectorySetting -Id $grpUnifiedSetting.Id -DirectorySetting $Setting

Quelle[2022-06-25] Zuweisen von Vertraulichkeitsbezeichnungen zu Microsoft 365-Gruppen in Azure Active Directory

schlägt die obere Anleitung fehlt, muss das richtige Template geladen werden, um der Wert zu setzen

$setting=(Get-AzureADDirectorySetting | where -Property DisplayName -Value “Group.Unified” -EQ)
if ($setting -eq $null)
{
$template = Get-AzureADDirectorySettingTemplate -Id 62375ab9-6b52-47ed-826b-58e47e0e304b
$setting = $template.CreateDirectorySetting()
$setting[“EnableMIPLabels”] = “True”
New-AzureADDirectorySetting -DirectorySetting $setting
}
else
{
$setting[“EnableMIPLabels”] = “True”
Set-AzureADDirectorySetting -Id $setting.Id -DirectorySetting $setting
}

Quelle[26.06.22] https://www.rakoellner.de/2019/12/sensitive-labeling-fuer-groups-und-sharepoint-sites-ist-nun-verfuegbar/