robotic
Goto Top

Lokale Administratoren von allen Clients in einer Domäne auslesen pt.2

Hi Admins,

ich möchte gerne aus meiner gesamten Domäne User mit lokalen Adminkonten (automatisch) identifizieren und eliminieren (das geht auch händisch).
Zuerst dachte ich an eine Funktion im SCCM/MECM o.ä. allerdings bin ich da bis jetzt nicht fündig geworden.

Ich bin allerdings im Forum hier auf folgenden (schon in die Jahre gekommenen Beitrag gestoßen:

Lokale Administratoren von allen Clients in einer Domäne auslesen

Es klingt für mich schon schlüssig, das über das LogonScript zu lösen, allerdings kann ich mir nicht vorstellen, dass es hierfür keine neuere Funktion gibt, obwohl das Thema schon eine hohe Relevanz hat.

Ich wäre euch dankbar, wenn ihr mich hierzu auf den Neuesten Stand bringen könntet <3

Content-ID: 4631997956

Url: https://administrator.de/contentid/4631997956

Ausgedruckt am: 24.11.2024 um 09:11 Uhr

2423392070
2423392070 14.11.2022 um 16:19:05 Uhr
Goto Top
Wenn wirklich alle in der Domäne sind, dann Get-LocalGroupMember Administrators über das AD Fragen...
Hubert.N
Hubert.N 14.11.2022 um 16:25:12 Uhr
Goto Top
Moin

Zitat von @Robotic:
ich möchte gerne (...) identifizieren und eliminieren

Frage ist, worauf Dein Hauptaugenmerk liegt. Wenn es um das Eliminieren geht, dann einfach "Eingeschränkte Gruppen konfigurieren" und das Thema ist vom Tisch.

Gruß
Robotic
Robotic 14.11.2022 um 16:30:28 Uhr
Goto Top
Zitat von @2423392070:

Wenn wirklich alle in der Domäne sind, dann Get-LocalGroupMember Administrators über das AD Fragen...

Okay, hast du da ein kurzes HowTo? Vielleicht eine gute Seite, wo das beschrieben wird? Kanns mir grob vorstellen, weiß aber nicht genau wie ich vorgehen musst.

Danke face-smile
Robotic
Robotic 14.11.2022 aktualisiert um 16:32:32 Uhr
Goto Top
Zitat von @Hubert.N:

Moin

Zitat von @Robotic:
ich möchte gerne (...) identifizieren und eliminieren

Frage ist, worauf Dein Hauptaugenmerk liegt. Wenn es um das Eliminieren geht, dann einfach "Eingeschränkte Gruppen konfigurieren" und das Thema ist vom Tisch.

Gruß

Ich würde sie vorher gerne sichten. Auf manchen Rechnern, z.B. in der Produktion müssen diese laufen und wir haben da etwas den Überblick verloren. Deshalb möchte ich hier nicht ganz so "hart" vorgehen :D

Aber das wäre dann die Lösung danach, wenn wir diese identifiziert haben.
7Gizmo7
7Gizmo7 14.11.2022 um 17:03:22 Uhr
Goto Top
DerWoWusste
DerWoWusste 14.11.2022, aktualisiert am 15.11.2022 um 09:57:16 Uhr
Goto Top
Deploye als immediate Task, welcher lokal als Systemkonto läuft (von einem read-only(!) Share):
bei englischen Systemen
Get-LocalGroupMember -group administrators
if ( $? -eq $false ) {
    out-file \\server\logshare\adminaccounts\!$env:computername.txt
}
Get-LocalGroupMember -Group Administrators | sls Administrator,Domänen-Admins -NotMatch | out-file \\server\logshare\adminaccounts\$env:computername.txt

bei deutschen Systemen:
Get-LocalGroupMember -group administratoren
if ( $? -eq $false ) {
    out-file \\server\logshare\adminaccounts\!$env:computername.txt
}
Get-LocalGroupMember -Group Administratoren | sls Administrator,Domänen-Admins -NotMatch | out-file \\server\logshare\adminaccounts\$env:computername.txt

Die Skripte listen alle Admins außer den zu erwartenden. Bei Fehlern wird eine Datei !%computername% im Logshare erstellt. Das Gute: wenn KEINE Admins außer den zu erwartenden (Administrator und Domänen-Admins) gefunden werden, ist die Dateigröße 0KB, somit findet man "Offenders" sehr schnell, wenn man die Ausgabedateien im Explorer nach Dateigröße anordnet.
4400667902
4400667902 15.11.2022 aktualisiert um 13:05:09 Uhr
Goto Top
@DerWoWusste
Gleich sprachunabhängig ist besser ... face-wink
Get-LocalGroupMember -Group (Get-LocalGroup -SID S-1-5-32-544)
3063370895
3063370895 15.11.2022 aktualisiert um 14:20:13 Uhr
Goto Top
Zitat von @4400667902:

@DerWoWusste
Gleich sprachunabhängig ist besser ... face-wink
Get-LocalGroupMember -Group (Get-LocalGroup -SID S-1-5-32-544)

Du hast da einen unnötigen Schritt drin, geht auch so:

Get-LocalGroupMember -SID  S-1-5-32-544


ich möchte gerne aus meiner gesamten Domäne User mit lokalen Adminkonten (automatisch) identifizieren und eliminieren
Get-LocalGroupMember -SID  S-1-5-32-544 | Where-Object ObjectClass -ne Gruppe | Remove-LocalGroupMember -Group  S-1-5-32-544
Wie auch immer auf den PCs ausführen. Allerdings hast du dann gar keinen Administrator auf dem PC.

Falls du einen Admin-Account behalten willst kannst du ihn so rausfiltern:

Get-LocalGroupMember -SID  S-1-5-32-544 | Where-Object ObjectClass -ne Gruppe | Where-Object Name -NotMatch "Administrator" | Remove-LocalGroupMember -Group  S-1-5-32-544  

Administrator gegen den Namen des Accounts austauschen, der Adminrechte behalten soll.
Prinzipiell immer erst mit -WhatIf am Ende ausführen, dann wird die Aktion nicht direkt ausgeführt sondern erstmal nur angezeigt was passiert wenn.

Wenn du die Befehle auf allen PCs sofort ausführen möchtest, könntest du so etwas machen:
(vorausgesetzt WinRM ist konfiguriert)

$computers = get-adComputer -filter { Enabled -eq $true  } | Select-Object -ExpandProperty Name
Invoke-Command -ComputerName $computers -ScriptBlock {Get-LocalGroupMember -SID "S-1-5-32-544" } -ErrorAction SilentlyContinue  

Dieser Zweizeiler fragt alle nicht deaktivierten Computer aus dem AD ab und listet dir die Admins darauf auf.

Aufpassen dass du dir nicht die Gruppe Domain Admins aus der Gruppe rauswirfst.
4400667902
4400667902 15.11.2022 aktualisiert um 16:28:58 Uhr
Goto Top
Du hast da einen unnötigen Schritt drin, geht auch so:
Stimmt da war doch noch was 🙃. Kartoffeln vor der Linse ...