oliver16
Goto Top

Powershell: get-localgroupmember -group "Administratoren " vs. net localgroup administratoren

Ich möchte alle lokalen Administratoren auf einem Windows Server identifizieren.

Auf einem Win10 bzw. Win11-Desktop liefern mir der Powershell-Befehl: get-localgroupmember -group "Administratoren"; das gleiche Ergebnis wie der Kommandozeilenbefehl: net localgroup administratoren.

Auf Windows Server 2016 und 2019 Maschinen liefert mir der o. g. Kommandozeilenbefehl die erwarteten lokalen Admins. Der o. g. Powershell-Befehl bricht mit: "Die Gruppe Administratoren wurde nicht gefunden" ab.

Leider fehlt mir da eine nachvollziehbare Begründung. Wieso kann findet das cmdlet die Administratoren-Gruppe nicht?

Content-Key: 1977686384

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

Printed on: April 28, 2024 at 12:04 o'clock

Mitglied: 1915348599
1915348599 Feb 22, 2022 updated at 10:14:02 (UTC)
Goto Top
Powershell-Befehl bricht mit: " Die Gruppe Administratoren wurde nicht gefunden" ab.
Wohl falsche Sprache gewählt, dort heißen die verm. "Administrators" face-wink, unabhängig von der Sprache bekommst du die mit der SID der Administrators Group
Get-LocalGroupMember -Group (Get-Localgroup -SID 'S-1-5-32-544')  
Member: Oliver16
Oliver16 Feb 22, 2022 at 10:25:22 (UTC)
Goto Top
Die Maschinen sind schon auf deutsch lokalisiert. Aber auch ein Versuch mit "Administrators" brachte keinen Erfolg.

Ebenso wenig mit der SID. Auf den Clients wird die SID gefunden. Auf den Servern ist diese SID nicht vorhanden. Umso verwunderlicher ja, dass die Kommandozeile die Administratorgruppe findet.
Member: DerWoWusste
DerWoWusste Feb 22, 2022 at 10:35:22 (UTC)
Goto Top
Hi.

Kenne das Problem. Auf Systemen, wo Powershell fehlschlägt, gab es mal Nutzer, die Windows nicht sauber entfernt hat. Habe tatsächlich auf diesen nur den Workaround gefunden, auf Batch zurückzugreifen.
Mitglied: 1915348599
1915348599 Feb 22, 2022 updated at 10:58:09 (UTC)
Goto Top
Zitat von @Oliver16:
Auf den Servern ist diese SID nicht vorhanden.
Sind das zufällig Domänencontroller ? Wenn ja dann ist das klar, dort wird diese Gruppe damit nicht zurückgeliefert ... Da musst du
Get-ADGroupMember Administratoren
nehmen weil es ja eine Builtin-AD Gruppe ist.

Get-LocalGroupMember hat auch einen Bug wenn gelöschte Admins in der Gruppe auftauchten, dann lieferte es Fehler.
Hier gibt's einen Fix
Abfrage lokaler Gruppenmitgliedschaften in Windows - Bug umschiffen
In so einem Fall kommt aber im Normalfall eine andere Fehlermeldung (das Array-Einträge nicht vergleicht werden konnten)
Member: DerWoWusste
DerWoWusste Feb 22, 2022 at 11:00:31 (UTC)
Goto Top
LOL.

Ja, man wird nicht jünger. Ich wusste, dass ich das damals hier gefragt hatte und hätte es wohl auch noch gefunden. Dass Uwe damals eine tadellose Lösung beigesteuert hatte, habe ich nicht mehr gewusst. Super, danke @1915348599
Member: colinardo
colinardo Feb 22, 2022 updated at 11:05:01 (UTC)
Goto Top
Zitat von @1915348599:
Sind das zufällig Domänencontroller ? Wenn ja dann ist das klar, dort wird diese Gruppe damit nicht zurückgeliefert ... Da musst du
Get-ADGroupMember Administratoren
nehmen weil es ja eine Builtin-AD Gruppe ist.
So ist es, das wäre auch mein Tipp, das er "Get-LocalGroupMember" auf einem DC versucht face-smile

Grüße Uwe
Member: DerWoWusste
DerWoWusste Feb 22, 2022 updated at 11:13:56 (UTC)
Goto Top
Aus dem verlinkten Beitrag von mir geht hervor, dass das auf Github schon ausführlich diskutiert wurde und immer noch wird. Mein Thread mit Uwes Skript ist dort auch verlinkt worden.
Dort gibt es einen weiteren Workaround, bitte testen und feedback, @Oliver16
For those who run into this problem, and just need a workaround, here is a snippet that should give you what you need:
$localAdminGroupWmi = Get-WMIObject Win32_Group -Filter "Name='Administrators'" $localAdminGroupWmi.GetRelated("Win32_UserAccount")  

This will subsequently list all User Accounts that are members of the Administrators group. Please note that "Administrators" is not language agnostic. For a Windows PC with Norwegian language, it would be "Administratorer" for instance.
If you need to check if a specific account is member of the admin group, you could then do something like this:

if($null -eq ($localAdminGroupWmi.GetRelated("Win32_UserAccount") | Where-Object -Property Caption -Like -Value "*\AdminAccount")) { Write-Host "No account with name "AdminAccount" found in the Administators group" }  
Member: colinardo
colinardo Feb 22, 2022 updated at 11:18:10 (UTC)
Goto Top
Zitat von @Oliver16:
Auf Windows Server 2016 und 2019 Maschinen liefert mir der o. g. Kommandozeilenbefehl die erwareteten lokalen Admins. Der o. g. Powershell-Befehl bricht mit: "Die Gruppe Administratoren wurde nicht gefunden" ab.

Ich glaube nicht das er da auf den o.g. speziellen Fehler mit Get-LocalGroupMember gestoßen ist, denn dann wäre die Fehlermeldung anders. Ich tippe wie @1915348599 das er das auf DCs ausgeführt hat denn da ist das normal das Get-LocalGroupMember die Administrators Gruppe nicht auflistet.
Member: Oliver16
Oliver16 Feb 22, 2022 at 12:53:09 (UTC)
Goto Top
Soweit mir bekannt, waren das keine DCs. Aber das ist erstmal eine Menge Input. Werde das heute Abend mal ausprobieren. Danke schon einmal.