Thema Datum  Von Nutzer Rating
Antwort
Rot Active Directory Logins auf SQL Server Instanzen pflegen? Gute Vorsätze, schlechte Praxis
03.12.2024 10:22:51 SQL Repo
NotSolved
03.12.2024 10:24:27 SQL Repo
NotSolved

Ansicht des Beitrags:
Von:
SQL Repo
Datum:
03.12.2024 10:22:51
Views:
111
Rating: Antwort:
  Ja
Thema:
Active Directory Logins auf SQL Server Instanzen pflegen? Gute Vorsätze, schlechte Praxis

Auslesen der SID aus SQL Server heraus mit folgender Abfrage:

SELECT name AS LoginName, sid AS LoginSID
FROM sys.server_principals
WHERE type IN ('U', 'G') -- Nur Benutzer und Gruppen
AND name LIKE '%\%'; -- Nur AD-Konten

 

Das Ergebnis speichert man als CSV-File und führt folgendes Powershell aus um die SID gegen das Active-Directory zu prüfen:

# Active Directory-Modul laden
Import-Module ActiveDirectory

# CSV-Datei mit AD-Logins einlesen
$SQLLogins = Import-Csv -Path "C:\tmp\sql_logins.csv"

# Verarbeite jede Zeile in der CSV-Datei
foreach ($Login in $SQLLogins) {
    try {
        # Sicherstellen, dass LoginName vorhanden ist
        if (-not $Login.LoginName) {
            Write-Output "Fehler: Kein LoginName in der CSV-Datei für einen Eintrag."
            continue
        }

        # Extrahiere den SamAccountName aus LoginName (Teil nach '\')
        $DomainUser = $Login.LoginName -split '\\'
        if ($DomainUser.Count -eq 2) {
            $Domain = $DomainUser[0]
            $SamAccountName = $DomainUser[1]
        } else {
            Write-Output "Fehler: Ungültiges Login-Format für '$($Login.LoginName)'."
            continue
        }

        # Prüfe zuerst, ob es ein Benutzer ist
        $ADUser = Get-ADUser -Filter "SamAccountName -eq '$SamAccountName'" -ErrorAction SilentlyContinue

        if ($null -ne $ADUser) {
            #Write-Output "$($Login.LoginName): Benutzer existiert im AD."
            # Optional: Benutzerdetails anzeigen
            #Write-Output "  Anzeigename: $($ADUser.DisplayName)"
            #Write-Output "  E-Mail: $($ADUser.EmailAddress)"
            continue
        }

        # Falls kein Benutzer gefunden wurde, prüfen, ob es eine Gruppe ist
        $ADGroup = Get-ADGroup -Filter "SamAccountName -eq '$SamAccountName'" -ErrorAction SilentlyContinue

        if ($null -ne $ADGroup) {
            #Write-Output "$($Login.LoginName): Gruppe existiert im AD."
            # Optional: Gruppendetails anzeigen
            #Write-Output "  Gruppenname: $($ADGroup.Name)"
            continue
        }

        # Weder Benutzer noch Gruppe gefunden
        Write-Output "$($Login.LoginName)"#: Weder Benutzer noch Gruppe existiert im AD."
    } catch {
        # Fehlerbehandlung für unvorhergesehene Probleme
        Write-Output "$($Login.LoginName): Fehler beim Abrufen des AD-Objekts. $_"
    }
}

 


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
Rot Active Directory Logins auf SQL Server Instanzen pflegen? Gute Vorsätze, schlechte Praxis
03.12.2024 10:22:51 SQL Repo
NotSolved
03.12.2024 10:24:27 SQL Repo
NotSolved