Thema Datum  Von Nutzer Rating
Antwort
31.03.2025 12:24:11 SQL Repo
NotSolved
Blau Automatisierte Überwachung von AD Account Login Mappings
31.03.2025 12:32:57 SQL Repo
NotSolved

Ansicht des Beitrags:
Von:
SQL Repo
Datum:
31.03.2025 12:32:57
Views:
821
Rating: Antwort:
  Ja
Thema:
Automatisierte Überwachung von AD Account Login Mappings

Dieses Powershell nimmt einen Parameter zu Verarbeitung der CSV-Datei:

 

# Active Directory-Modul laden
Import-Module ActiveDirectory

param(
    [string]$ServerName = "DefaultServer"
)

Write-Output "Verwende Server: $ServerName"

# CSV-Pfad mit dem Parameter zusammensetzen
$CSVPath = "C:\tmp\output$ServerName.csv"

# CSV einlesen
$SQLLogins = Import-Csv -Path $CSVPath -Delimiter "," -Header "LoginName", "LoginSID"

# Array für nicht existierende Logins
$NonExistingAccounts = @()

foreach ($Login in $SQLLogins) {
    try {
        Write-Output "Prüfe Login: $($Login.LoginName)"
        Write-Output "Roh-SID: $($Login.LoginSID)"
   
        # Hex-SID in lesbares Format konvertieren
        $ReadableSID = Convert-HexSIDToADSID -HexSID $Login.LoginSID
        Write-Output "Lesbare SID: $ReadableSID"

        # Prüfen, ob SID im AD existiert
        $ADObject = Get-ADObject -Filter { ObjectSID -eq $ReadableSID } -Properties SamAccountName, ObjectGUID

        if ($null -ne $ADObject) {
            Write-Output "$($Login.LoginName) existiert im AD."
        } else {
            Write-Output "$($Login.LoginName) existiert NICHT im AD."
            # Füge den Login dem Array hinzu
            $NonExistingAccounts += [PSCustomObject]@{
                LoginName = $Login.LoginName
                LoginSID  = $Login.LoginSID
            }
        }
    } catch {
        Write-Output "Fehler beim Prüfen: $($_.Exception.Message)"
    }
}

# Wenn es nicht existierende Accounts gibt, exportiere diese als CSV
if ($NonExistingAccounts.Count -gt 0) {
    $OutputCSV = "C:\tmp\output$ServerName_filtered.csv"
    $NonExistingAccounts | Export-Csv -Path $OutputCSV -NoTypeInformation -Delimiter ","
    Write-Output "Die nicht existierenden Logins wurden in $OutputCSV gespeichert."
} else {
    Write-Output "Alle Logins existieren im AD. Keine Daten für die CSV-Ausgabe."
}

function Convert-HexSIDToADSID {
    param ([string]$HexSID)
    if (-not $HexSID.StartsWith("0x")) {
        throw "Ungültiges SID-Format: $HexSID. Muss mit '0x' beginnen."
    }

    try {
        # Hex-String bereinigen
        $CleanHexSID = $HexSID.Substring(2).Replace(" ", "").Replace("`t", "").Replace("`n", "")
        if ($CleanHexSID.Length % 2 -ne 0) {
            throw "Ungültige Länge des Hex-Strings: $HexSID."
        }

        # Byte-Array erstellen
        $SIDBytes = for ($i = 0; $i -lt $CleanHexSID.Length; $i += 2) {
            [Convert]::ToByte($CleanHexSID.Substring($i, 2), 16)
        }

        # SID-Komponenten extrahieren
        $Revision = $SIDBytes[0]
        $SubAuthCount = $SIDBytes[1]

        # Identifier Authority (6 Bytes, manuell verarbeiten)
        $IdentifierAuthorityBytes = $SIDBytes[2..7]
        $IdentifierAuthority = 0
        for ($i = 0; $i -lt $IdentifierAuthorityBytes.Length; $i++) {
            $IdentifierAuthority += $IdentifierAuthorityBytes[$i] * [math]::Pow(256, (5 - $i))
        }

        # SubAuthorities verarbeiten
        $SubAuthorities = @()
        for ($i = 0; $i -lt $SubAuthCount; $i++) {
            $StartIndex = 8 + ($i * 4)
            $SubAuth = [BitConverter]::ToUInt32($SIDBytes[$StartIndex..($StartIndex + 3)] -as [byte[]], 0)
            $SubAuthorities += $SubAuth
        }

        # SID zusammenstellen
        $SID = "S-$Revision-$IdentifierAuthority"
        foreach ($SubAuth in $SubAuthorities) {
            $SID += "-$SubAuth"
        }

        return $SID
    } catch {
        throw "Fehler beim Konvertieren der SID: $HexSID. Details: $_"
    }
}
###

Hier ist der Backlink zu diesem Beitrag https://itatservice.de/it-service/technischer-blog_AutomatisierterAccountLoginCheck.php


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
31.03.2025 12:24:11 SQL Repo
NotSolved
Blau Automatisierte Überwachung von AD Account Login Mappings
31.03.2025 12:32:57 SQL Repo
NotSolved