Skip to content

Daniels Tagesmeldungen

Kleine IT-Episoden, der Diabetes & das wahre Leben

  • Startseite
  • About me…
    • Lebenslauf
    • Weiterbildung
  • Diabetes melitus
    • Diabetes melitus – Definition/Typen
    • Diabetes melitus – Podcasts
    • Diabetes Typ-2 – Erläuterung
    • Medikament – Forxiga (Dapagliflozin)
    • Medikament – Eylea (Aflibercept)
    • Medikament – Lucentis (Ranibizumab )
    • Medikament – Metformin
  • Disclaimer
  • Toggle search form

Kategorie: Windows Server 2025

Powershell: Onpremise-Gruppenmitgliedschaften nach Datum entfernen

Posted on 14. Mai 202512. Mai 2025 By Daniel Lensing Keine Kommentare zu Powershell: Onpremise-Gruppenmitgliedschaften nach Datum entfernen

Ich hatte die Problematik, dass während eines Projektes Gruppenberechtigungen datumsgesteuert entfernt werden sollten. Während des Projektes wurden mehrere Gruppen definiert, bei der Gruppenmitgliedschaften verarbeitet werden sollten.

Entsprechend wurden CSV-Dateien generiert als Grundlage für die Verarbeitung:

SamAccountName;ExpiryDate
jdoe;2025-05-12
asmith;2025-06-01

Die Dateien haben als Definition die folgende Struktur:

GroupExpLeave_<Gruppenname>.csv

Mit dem nun folgenden Skript werden die Mitglieder der Gruppen ermittelt und geprüft, ob das Ablaufdatum erreicht ist. Wenn dieses der Fall ist, wird der User aus der Mitgliedschaft entfernt.


# Verzeichnis mit den CSV-Dateien
$csvDirectory = "C:\CSC-Pfad"
$csvFiles = Get-ChildItem -Path $csvDirectory -Filter "GroupExpLeave_*.csv"

# Logdatei mit Tagesdatum
$logDate = Get-Date -Format "yyyy-MM-dd"
$logPath = Join-Path -Path $csvDirectory -ChildPath "GroupExpLeave_$logDate.log"

# Hashtable für Gruppenmitgliedschaften
$groupCache = @{}

foreach ($file in $csvFiles) {
    # Gruppennamen aus dem Dateinamen extrahieren
    if ($file.Name -match "^GroupExpLeave_(.+?)\.csv$") {
        $groupName = $matches[1]
        $csvPath = $file.FullName

        # CSV mit Semikolon einlesen
        $members = Import-Csv -Path $csvPath -Delimiter ";"
        $today = Get-Date
        $remainingMembers = @()

        # Gruppenmitglieder einmalig abrufen und cachen
        if (-not $groupCache.ContainsKey($groupName)) {
            try {
                $groupCache[$groupName] = Get-ADGroupMember -Identity $groupName | Select-Object -ExpandProperty SamAccountName
            } catch {
                Add-Content -Path $logPath -Value "[$(Get-Date)] Error Requesting GroupMembers $groupName: $_"
                continue
            }
        }

        $cachedMembers = $groupCache[$groupName]

        foreach ($member in $members) {
            $expiryDate = Get-Date $member.ExpiryDate

            if ($expiryDate -lt $today) {
                if ($cachedMembers -contains $member.SamAccountName) {
                    try {
                        Remove-ADGroupMember -Identity $groupName -Members $member.SamAccountName -Confirm:$false
                        Add-Content -Path $logPath -Value "[$(Get-Date)] User $($member.SamAccountName) from $groupName removed (Ablaufdatum: $expiryDate)."
                    } catch {
                        Add-Content -Path $logPath -Value "[$(Get-Date)] Error on removing user $($member.SamAccountName) from $groupName: $_"
                        $remainingMembers += $member
                    }
                } else {
                    Add-Content -Path $logPath -Value "[$(Get-Date)] User $($member.SamAccountName) is not member of group $groupName – ignored."
                }
            } else {
                $remainingMembers += $member
            }
        }

        # Aktualisierte CSV-Datei schreiben
        $remainingMembers | Export-Csv -Path $csvPath -Delimiter ";" -NoTypeInformation -Encoding UTF8
        Add-Content -Path $logPath -Value "[$(Get-Date)] CSV-File $($file.Name) was created"
    }
}

Die angewandte Datei für die jeweilige Gruppe wird mit den noch gültigen Benutzern nach deren Prüfung neu erstellt. Es ist bei der Einplanung des Tasks darauf zu achten, dass zu dem Zeitpunkt auf die Steuer-Dateien nicht zugegriffen wird.

Powershell, Programmierung, Server, Windows Server 2019, Windows Server 2022, Windows Server 2025

Powershell: Ziel einer URL abfragen

Posted on 12. Mai 202510. Mai 2025 By Daniel Lensing Keine Kommentare zu Powershell: Ziel einer URL abfragen

Ich durfte am Wochenende einen Umzug einer Domain-Adresse begleiten. Dazu wurden Webservices angepasst. Ich wollte die erforderliche Abfrage nach der Umstellung schnell per Skript prüfen. Bei diesem ist das folgende entstanden:

[CmdletBinding()]
param(
    [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
    [string[]]$URL
)

function Expand-URL {
    param (
        [Parameter(Mandatory = $true)]
        [string]$ShortUrl
    )
    try {
        $resp = Invoke-WebRequest -Uri $ShortUrl -MaximumRedirection 10 -Method Head -UseBasicParsing
        return $resp.BaseResponse.ResponseUri.AbsoluteUri
    }
    catch {
        try {
            $resp = Invoke-WebRequest -Uri $ShortUrl -MaximumRedirection 10 -Method Get -UseBasicParsing
            return $resp.BaseResponse.ResponseUri.AbsoluteUri
        }
        catch {
            Write-Error "Fehler beim Abrufen der URL [$ShortUrl]: $_"
            return $null
        }
    }
}

foreach ($shortUrl in $URL) {
    $finalUrl = Expand-URL -ShortUrl $shortUrl
    if ($finalUrl) {
        Write-Output "Zieladresse: "$finalUrl
    }
    else {
        Write-Output "Konnte die Zieladresse für $shortUrl nicht ermitteln."
    }
}

Dieses muss als Datei gespeichert werden. Mit dem Aufruf

.\Skript.ps1 https://www.url.com

kann dann die Adresse aufgelöst werden. Sollte eine Weiterleitung eingerichtet sein, wird die passende Zieladresse ausgegeben.

Internet, Powershell, Programmierung, Web-Installationen, Windows Server 2019, Windows Server 2022, Windows Server 2025

AD Webservices: Einschränkung bei Powershell

Posted on 22. April 202521. April 2025 By Daniel Lensing Keine Kommentare zu AD Webservices: Einschränkung bei Powershell

Die Einstellung MaxGroupOrMemberEntries in Active Directory Web Services (ADWS) legt die maximale Anzahl von Gruppenmitgliedern fest, die von bestimmten PowerShell-Cmdlets abgerufen werden können. Standardmäßig ist dieser Wert auf 5000 begrenzt.

Dieses ist mir aufgefallen als ich eine Abfrage mit dem CMDlet „Get-ADGroupMember“ abfragen wollte. Die Gruppe hatte eine Mitgliederanzahl größer den 5000.

Die Einschränkung gilt für die folgenden CMDlets:

  • Get-ADGroupMember
    • Wird verwendet, um Mitglieder einer Gruppe abzurufen. Die Anzahl der zurückgegebenen Mitglieder ist durch diesen Eintrag begrenzt.
  • Get-ADPrincipalGroupMembership
    • Dieses Cmdlet listet alle Gruppenmitgliedschaften eines Benutzers oder Computers auf.
  • Get-ADAccountAuthorizationGroup
    • Zeigt die Sicherheitsgruppen an, die für die Autorisierung eines Benutzerkontos verwendet werden.

Es gibt 2 Varianten, dieses Problem zu umgehen. Die einfachste Möglichkeit ist die Nutzung des CMDlets „Get-ADGroup“, die mit dem ExtensionProperty „Member“ genutzt wird und einer Pipe die Daten weiterverarbeitet.

Eine zweite Variante ist die Erweiterung im Active Directory Webservice (ADWS). Dazu muss der Eintrag

<add key="MaxGroupOrMemberEntries" value="20000"/>

in der Datei C:\Windows\ADWS\Microsoft.ActiveDirectory.WebServices.exe.config hinzugefügt werden. Dieses ist mit einem Texteditor möglich. Dieses muss im Bereich der <appSettings> geschehen. Um die Änderung zu übernehmen, muss der Dienst neugestartet werden.

Server, Windows Server 2019, Windows Server 2022, Windows Server 2025

Anwendungsspezifisches Eventlog für Powershell-Skript

Posted on 18. Februar 202517. Februar 2025 By Daniel Lensing Keine Kommentare zu Anwendungsspezifisches Eventlog für Powershell-Skript

Im Rahmen eines Skriptes kann es sinnvoll sein, wenn man ein dediziertes Eventlog erstellt. Dieses kann dann zum Beispiel in einer Monitoring-Lösung weiterverarbeitet werden.

Dazu muss ein neues „Eventlog“ sowie eine neue „Source“ erstellt werden über den Powershell-Befehl „New-Eventlog„:

New-EventLog -LogName "ApplicationName" -Source "AutoScriptPS1" -EA SilentlyContinue

Diese Befehlszeile muss mit administrativen Rechten ausgeführt werden.

Anschließend ist es möglich das neu erstellte Eventlog per Write-Eventlog mit Werten zu befüllen:

Write-EventLog 
      -LogName "ApplicationName"'
      -Source "AutoScriptPS1"'
      -EntryType "Error"'
      -Message "An issue has stopped the script."'
      -EventId 99

Als „EntryType“ können neben „Error“ auch „Information“ oder „Warning“ genutzt werden. Die EventID kann bis zu einem Wert 65535 definiert werden.

Client, Powershell, Programmierung, Server, Windows 10, Windows 11, Windows Server 2016, Windows Server 2019, Windows Server 2022, Windows Server 2025

Neuer Modi für LAPS unter W11 24H2 und Server 2025

Posted on 17. Februar 202516. Februar 2025 By Daniel Lensing Keine Kommentare zu Neuer Modi für LAPS unter W11 24H2 und Server 2025

Die Windows Local Administrator Password Solution (Windows LAPS) ist ein leistungsstarkes Werkzeug zur Verwaltung und Rotation der Passwörter lokaler Administratorkonten. Mit der Einführung von Windows Server 2025 und Windows 11 24H2 wurden neue Funktionen und Modi hinzugefügt, die die Verwaltung dieser Konten weiter vereinfachen und verbessern.

Überblick über Windows LAPS

Windows LAPS ist darauf ausgelegt, die Passwörter lokaler Windows-Konten regelmäßig zu rotieren, um die Sicherheit zu erhöhen. Dies kann das integrierte Administratorkonto oder ein benutzerdefiniertes neues Konto sein. Der IT-Administrator hat zwei verschiedene Modi zur Auswahl: den manuellen und den automatischen Kontoverwaltungsmodus.

Manueller Kontoverwaltungsmodus

Der manuelle Modus ist der Standardmodus und bietet dem IT-Administrator die Kontrolle über alle Aspekte des verwalteten Kontos, außer dem Passwort. Das Passwort wird von Windows LAPS verwaltet und geschützt1. Der IT-Administrator kann wählen, ob das integrierte Administratorkonto oder ein benutzerdefiniertes neues Konto verwaltet werden soll. Wenn ein benutzerdefiniertes Konto gewählt wird, muss der IT-Administrator dieses Konto vor der Aktivierung von Windows LAPS erstellen.

Vorteile des manuellen Modus:

  • Flexibilität: Der IT-Administrator hat volle Kontrolle über die Konfiguration des Kontos.
  • Sicherheit: Das Passwort wird automatisch geschützt und rotiert.

Nachteile des manuellen Modus:

  • Komplexität: Der IT-Administrator muss das Konto manuell erstellen und verwalten.
  • Mögliche Fehler: Da der Administrator mehr Verantwortung trägt, besteht ein höheres Risiko für menschliche Fehler.

Automatischer Kontoverwaltungsmodus

Der automatische Modus ist ein optionaler Modus, der standardmäßig deaktiviert ist. In diesem Modus übernimmt Windows LAPS die vollständige Verwaltung des Kontos, einschließlich der Erstellung und Löschung des Kontos sowie der Passwortrotation. Der IT-Administrator kann wählen, ob das integrierte Administratorkonto oder ein benutzerdefiniertes neues Konto verwaltet werden soll.

Vorteile des automatischen Modus:

  • Einfachheit: Windows LAPS übernimmt die gesamte Verwaltung des Kontos, was die Komplexität reduziert.
  • Sicherheit: Das Konto wird automatisch erstellt und verwaltet, was das Risiko von menschlichen Fehlern minimiert.

Nachteile des automatischen Modus:

  • Weniger Flexibilität: Der IT-Administrator hat weniger Kontrolle über die Konfiguration des Kontos.
  • Abhängigkeit von Windows LAPS: Die Verwaltung des Kontos ist vollständig von Windows LAPS abhängig, was bei Problemen mit dem Tool zu Schwierigkeiten führen kann.

Zusammenfassend

Windows LAPS bietet nun zwei verschiedene Kontoverwaltungsmodi, die jeweils ihre eigenen Vor- und Nachteile haben. Der manuelle Modus bietet mehr Flexibilität und Kontrolle, erfordert jedoch mehr Aufwand und birgt ein höheres Risiko für menschliche Fehler. Der automatische Modus hingegen vereinfacht die Verwaltung und erhöht die Sicherheit, bietet jedoch weniger Flexibilität.

Client, Server, Windows 11, Windows Server 2025

Seitennummerierung der Beiträge

Vorherige 1 2

Daniel Lensing

Ich betreibe diesen Blog, bei dem ich meine Erfahrungen aus der IT & dem Berufsalltag sowie dem Wahnsinn des Lebens mit Höhen und Tiefen. Darunter meine „Erlebnisreise“ zum Planeten „Diabetes mellitus Typ-2“.

Translate:

Follow us

Kategorien

  • Allgemein (1)
  • Client (242)
    • Android (8)
    • Fedora (Linux) (5)
    • iOS (6)
    • Mac OS X (6)
    • Peripherie (5)
    • Ubuntu (Linux) (9)
    • Windows 10 (63)
    • Windows 11 (28)
    • Windows 7 (100)
    • Windows 8 (36)
    • Windows 8.1 (28)
    • Windows Mobile (2)
    • Windows Vista (65)
    • Windows XP (21)
  • Cloud (15)
    • Amazon AWS (1)
    • Microsoft Azure (7)
    • Office 365 (9)
  • Fortbewegung (58)
    • Auto (18)
    • Bahn (19)
    • Beinarbeit (6)
    • Flugzeug (4)
    • Zweirad (14)
  • IT-Nachrichten (37)
  • Leben Beruf und Gesundheit (216)
    • #t2dhero (58)
    • Arbeitszimmer (38)
    • Audio (22)
    • Film / Kino (7)
    • Gedanken (81)
    • Gesundheit (38)
    • Internet (7)
    • Lebensmittel & Essen (22)
    • Lesestoff (19)
    • Sport (11)
    • Veranstaltung (3)
  • Lehren & Lernen (50)
    • Forschung (2)
    • Konferenzen (3)
    • Lehre (1)
    • Präsentation (4)
    • Zertifizierung (42)
  • Programme (331)
    • Android-Apps (28)
    • Eigene Tools (13)
    • iOS-Apps (7)
    • Office (87)
    • Patchday+Updates (76)
    • Software (154)
    • Spiele (3)
    • Windows Phone-Apps (2)
  • Programmierung (97)
    • AutoIT (2)
    • KiXtart (2)
    • PHP (3)
    • Power Automate (1)
    • Powershell (66)
    • VB.NET (11)
    • VBA (10)
    • VBS (10)
  • Server (163)
    • Citrix XenServer (2)
    • Exchange Server (27)
    • Lync Server (1)
    • System Center (4)
    • Ubuntu Server (2)
    • Windows Home Server (2)
    • Windows Server (92)
    • Windows Server 2012 (45)
    • Windows Server 2016 (15)
    • Windows Server 2019 (20)
    • Windows Server 2022 (19)
    • Windows Server 2025 (12)
  • Telekommunikation (38)
    • Festnetz (3)
    • Internet (13)
    • Mobilfunk (23)
  • Verkauf & Verlosung (1)
  • Web-Installationen (37)
    • Joomla (4)
    • Mastodon (1)
    • MediaWiki (10)
    • phpMyAdmin (2)
    • Piwik (4)
    • Wordpress (20)
Mastodon

Copyright © 2025 Daniels Tagesmeldungen.

Powered by PressBook WordPress theme