none
lokale Administratoren auslesen - unabhängig von der OS-Spracheinstellung RRS feed

  • Frage

  • Hi, 

    ich möchte über ein PS Script remote die lokalen Admins von einigen Clients abfragen. 

    Dazu verwende ich das Commandlet: Get-LocalGroupMember -Group "Administrators"

    Nur funktioniert das nicht auf allen Clients, da nicht alle ein OS mit englischen Sprachsettings nutzen und die Gruppe somit nicht immer "Administrators" heißt.

    Mit Wildcards kann ich aber soweit ich weiß hier nicht arbeiten. 

    Wisst ihr, wie man die Mitglieder der lokale Admingruppe mit Get-LocalGroupMember abfragen kann, ohne dass die OS-Spracheinstellung eine Rolle spielt? 

    Ich dachte, ich hätte auf dieser Seite die Lösung gefunden: 

    https://community.idera.com/database-tools/powershell/powertips/b/tips/posts/using-localized-user-and-group-names

    Code unter: "Likewise, the line below always lists local Administrators, regardless of which language your operating system uses"

    Leider funktioniert das bei mir nicht - es werden dadurch zwar die Mitglieder der lokalen Admingruppe abgefragt, aber auch nur bei einem OS mit englischen Sprachsettings. Ansonsten können sie nicht ausgelesen werden. 

    Habt ihr dazu Ideen/Lösungen? 

    DANKE und LG 


    Mittwoch, 14. Juli 2021 21:27

Antworten

  • Für wie viele unterschiedliche Sprachversionen soll der Code denn funktionieren?  ;-)

    Da es im cmdlet Get-LocalGroupMember einen Bug gibt, nehmen wir am Besten einfach etwas Anderes. Der folgende Schnipsel funktioniert bei mir wenigstens auf einem englischen und auf einem deutschen Windows wie gewünscht - es ermittelt die Mitglieder der Gruppe der lokalen Administratoren:

    Get-CimInstance -ClassName Win32_GroupUser | 
        Where-Object { $_.GroupComponent.Name -match '^Administrator' -and $_.GroupComponent.Domain -eq $ENV:ComputerName } | 
            Select-Object -ExpandProperty PartComponent | 
                Select-Object -Property Name

    Sollten die Administratoren auf anderen Sprachversionen noch ganz anders heißen und Du das benötigst, musst Du halt das regex-Pattern anpassen.  ;-)

    Edit:

    hier mal gleich noch als Referenz die Liste der Namen der Administratoren in verschiedenen Sprachen:

    https://social.technet.microsoft.com/wiki/contents/articles/13813.localized-names-for-administrator-account-in-windows.aspx


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 14. Juli 2021 23:11

Alle Antworten

  • Für wie viele unterschiedliche Sprachversionen soll der Code denn funktionieren?  ;-)

    Da es im cmdlet Get-LocalGroupMember einen Bug gibt, nehmen wir am Besten einfach etwas Anderes. Der folgende Schnipsel funktioniert bei mir wenigstens auf einem englischen und auf einem deutschen Windows wie gewünscht - es ermittelt die Mitglieder der Gruppe der lokalen Administratoren:

    Get-CimInstance -ClassName Win32_GroupUser | 
        Where-Object { $_.GroupComponent.Name -match '^Administrator' -and $_.GroupComponent.Domain -eq $ENV:ComputerName } | 
            Select-Object -ExpandProperty PartComponent | 
                Select-Object -Property Name

    Sollten die Administratoren auf anderen Sprachversionen noch ganz anders heißen und Du das benötigst, musst Du halt das regex-Pattern anpassen.  ;-)

    Edit:

    hier mal gleich noch als Referenz die Liste der Namen der Administratoren in verschiedenen Sprachen:

    https://social.technet.microsoft.com/wiki/contents/articles/13813.localized-names-for-administrator-account-in-windows.aspx


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 14. Juli 2021 23:11
  • Moin,

    die lokale Admingruppe ist ja eine Well-Known-Group und wird in jeder Sprache mit

    Get-LocalGroup -SID "S-1-5-32-544"

    zurückgegeben. Somit werden die Mitglieder mittels

    Get-LocalGroup -SID "S-1-5-32-544" | Get-LocalGroupMember

    aufgelistet.

    Der Ansatz von Olaf mit

    Get-CimInstance -ClassName Win32_GroupUser

    hat, wenn ich mich recht entsinne, den Nachteil, dass dieser Befehl auf einem Domain Member sämtliche Gruppenmitgliedschaften des Active Directory mit ausgibt.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 15. Juli 2021 05:49
  • zurückgegeben. Somit werden die Mitglieder mittels

    Get-LocalGroup -SID "S-1-5-32-544" | Get-LocalGroupMember

    aufgelistet.

    Mit der Version bekomme ich tatsächlich in einer Test-Umgebung den im Bug dokumentierten Fehler ... 

    Get-LocalGroupMember : Unbekannter Fehler: Fehlercode =1789
    In Zeile:1 Zeichen:38
    + Get-LocalGroup -SID "S-1-5-32-544" | Get-LocalGroupMember
    +                                      ~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (Administratoren:LocalGroup) [Get-LocalGroupMember], Win32InternalException
        + FullyQualifiedErrorId : Win32Internal,Microsoft.PowerShell.Commands.GetLocalGroupMemberCommand
    ... aber ja, Du hast Recht, die WMI/CIM-Abfrage dauert dann etwas länger ... ;-) 

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 15. Juli 2021 13:36