• Active Directory
    • AD Consulting
    • AD Design
      • Domain Name festlegen
      • Domain Struktur einrichten
      • Forest Struktur definieren
    • AD Management
    • AD Automation
      • Dynamic Access Control (DAC)
    • AD Federation Services
      • ADFS Betrieb
      • ADFS und Office365
      • ADFS und Cisco Unified Communications Manager
      • SAML und ADFS 2.0
  • Azure / M365
    • Azure AD
    • Microsoft 365 (O365)
  • Migration
    • Active Directory Migration
    • Exchange Migration
    • File Server Migration
    • Lotus Notes Migration
    • Novell Migration
  • Wissen
    • Alle Beiträge
    • Administration
    • PowerShell
    • Migration
    • Exchange
    • Tools
  • Kontakt
    • Wir über uns
    • Kontakt
  • EN
info@firstattribute.com
by FirstAttribute
Active Directory FAQActive Directory FAQ
  • Active Directory
    • AD Consulting
    • AD Design
      • Domain Name festlegen
      • Domain Struktur einrichten
      • Forest Struktur definieren
    • AD Management
    • AD Automation
      • Dynamic Access Control (DAC)
    • AD Federation Services
      • ADFS Betrieb
      • ADFS und Office365
      • ADFS und Cisco Unified Communications Manager
      • SAML und ADFS 2.0
  • Azure / M365
    • Azure AD
    • Microsoft 365 (O365)
  • Migration
    • Active Directory Migration
    • Exchange Migration
    • File Server Migration
    • Lotus Notes Migration
    • Novell Migration
  • Wissen
    • Alle Beiträge
    • Administration
    • PowerShell
    • Migration
    • Exchange
    • Tools
  • Kontakt
    • Wir über uns
    • Kontakt
  • EN

IsMember – Gruppenmitgliedschaft des Benutzers prüfen

Feb 28, 2017 (Letztes Update) | Posted by Oliver Riedel PowerShell |

 

IsMember – Gruppenmitgliedschaft des Benutzers prüfen

Die Powershell-Funktion „IsMember“ überprüft, ob der Skript-ausführende Anwender Mitglied einer Gruppe ist. Dies hat Vorteile gegenüber der ADSI-Variante.

Inhaltsverzeichnis

  • 1 PowerShell-Funktion: IsMember
    • 1.1 Vorteil gegenüber ADSI Abfrage
    • 1.2 Skript als Admin starten
  • 2 Vollständiges IsMember-Skript: Gruppenmitgliedschaft des Benutzers prüfen
  • 3 Beispiele für IsMember
  • 4 Wie viele Gruppenmitgliedschaften haben meine AD Benutzer?
    • 4.1 Anzahl Gruppen auslesen – pro User und OU

PowerShell-Funktion: IsMember

Die Funktion „IsMember“ wertet den User Token aus, der bei der Anmeldung vom System generiert wird. Hierzu werden die Gruppen-SIDs aus dem Access-Token des angemeldeten Anwenders ermittelt und mit der übergebenen Gruppe/SID abgeglichen. Bei einer Übereinstimmung wird der Wert „True“ zurückgegeben. Um eine Abfrage nach Gruppen mit „IsMember“ durchzuführen, wird einfach der Gruppenname übergeben.

Die IsMember-Abfrage nach Gruppe „WordUser“:

1
IsMember(WordUser)

Es gibt fest definierte Gruppen, bei denen der Gruppenname vom Betriebssystem abhängt. Die Gruppe der lokalen Administratoren heißt auf Deutsch „Administratoren“ und auf Englisch „Administrators“. In diesem Fall ist es sinnvoll, die SIDs der Gruppe zu verwenden. In diesem Fall wird der Parameter „–GroupSID“ angehangen. Microsoft stellt eine Liste vordefinierter SIDs zur Verfügung.

Die IsMember-Abfrage nach „GroupSID“:

1
IsMember –GroupSID “X-X-XX-XXX"

 

Vorteil gegenüber ADSI Abfrage

Im User Token sind die SIDs von allen lokalen Gruppen und allen Domänengruppen enthalten, in denen der Anwender Mitglied ist. Ein großer Vorteil gegenüber einer ADSI-Abfrage ist, dass nicht jedes Mal ein Domain Controller kontaktiert werden muss. In Skripten mit vielen Gruppenabfragen (z.B. Logon-Skripte) wird die Verarbeitung auf diese Weise beschleunigt.

Mit dieser Funktion können lokale und Domänen-Gruppen abgefragt werden.
 

Skript als Admin starten

Zusätzlich zur Gruppenmitgliedschaft kann mit dieser Funktion überprüft werden, ob das Skript mit lokalen Administrationsrechten gestartet worden ist. Ist die Benutzerkontensteuerung eingeschalten und der Anwender in der lokalen Administratorengruppe, wird nicht automatisch die SID der lokalen Administratorengruppe dem Access-Token hinzugefügt. Die SID befindet sich nur im Token, wenn der Anwender das Programm/Skript über „Als Administrator ausführen“ gestartet hat.

Bei vordefinierten Gruppen, wie z.B. bei der lokalen Administratorengruppe, sollte man anstelle des Namens die SID (in diesem Fall „S-1-5-32-544“) nutzen. Dadurch ist man von der Sprache des Betriebssystems unabhängig:

1
2
3
4
5
If (!(IsMember -GroupSID "S-1-5-32-544"))
{
  # Error auslösen
  Throw "Das Skript muss mit administrativen Berechtigungen gestartet werden!"
}

Vollständiges IsMember-Skript:
Gruppenmitgliedschaft des Benutzers prüfen

Hier nun das vollständige Skript für die PowerShell-Funktion „IsMember“:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
###############################################################################################################################
# Function: IsMember
# ------------------
# Aufgabe: Überprüft ob der Benutzer Mitglied in einer Gruppe ist
# Übergabeparameter: Group; Gruppe
#                    Domain; Domäne (Wird keine Domäne angegeben, dann wird die Umgebungsvariable "USERDOMAIN" verwendet)
#                    SID; Anstelle einer Gruppe kann eine SID im String-Format angegeben werden
# Rückgabewerte: True; Anwender ist Mitglied
#                False; Anwender ist nicht Mitglied
###############################################################################################################################
function IsMember
{
  #Übergabeparameter
  param(
        [String]$Group = "",
        [String]$Domain=$Env:USERDOMAIN,
        [String]$GroupSID = ""
        )
    
  # Keine SID
  If($GroupSID -eq "")
  {
    If($Domain -like $env:COMPUTERNAME)
    {
      $NtSecurityPrincipal = New-Object System.Security.Principal.NTAccount($Group)
    }
    Else
    {
      $NtSecurityPrincipal = New-Object System.Security.Principal.NTAccount($Domain, $Group)
    }
    $GroupSID = ($NtSecurityPrincipal.Translate([System.Security.Principal.SecurityIdentifier])).Value
  }
 
  # SID mit SIDs im Token vergleichen
  $Token = [System.Security.Principal.WindowsIdentity]::GetCurrent()
  $GroupSIDs = $Token.Groups
  ForEach($Sid in $GroupSIDs)
  {
    # Ist Mitglied
    If($Sid -eq $GroupSID) {Return $True}
  }
 
  # Kein Mitglied der Gruppe
  Return $False
}

Beispiele für IsMember

Ich habe das PowerShell-Skript vervollständigt und Kommentare ergänzt. Es beinhaltet 3 Beispiele:

  1. Prüfung, ob der Skript ausführende User als Admin angemeldet ist
    (siehe oben „Skript als Admin starten“)
     
  2. Prüfung, ob der Anwender Mitglied in der Gruppe „Domänen-Benutzer“ ist
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Abfrage ob der Anwender Mitglied in der Gruppe "Domänen-Benutzer" ist
    If(IsMember("Domänen-Benutzer"))
    {
      Write-Host("Anwender ist Mitglied")
    }
    Else
    {
      Write-Host("Anwender ist kein Mitglied")
    }
  3. Prüfung, ob der Anwender Mitglied in der Gruppe „Domänen-Benutzer“ in der Domäne „FirstAttribute“ ist
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Abfrage ob der Anwender Mitglied in der Gruppe "Domänen-Benutzer" in der Domäne "FirstAttribute" ist
    If(IsMember("Domänen-Benutzer") -Domain "FirstAttribute")
    {
      Write-Host("Anwender ist Mitglied")
    }
    Else
    {
      Write-Host("Anwender ist kein Mitglied")
    }

Wie viele Gruppenmitgliedschaften haben meine AD Benutzer?

Mit kostenlosem Tool auslesen – ohne PowerShell!

Oft reicht es, bereits zu wissen, wie viele Gruppenmitgliedschaften ein User hat. Mit unserem kostenfreien Werkzeug FirstWare AD-Inspector lassen sich Gruppenmitgliedschaften einzelner User bequem anzeigen. Einen Einstieg zum Tool gibt Steve im Beitrag Active Directory Reporting einfach gemacht.

firstware-ad-inspector-benutzer-gruppenmitgliedschaft

FirstWare AD-Inspector (→Bericht: Benutzer Gruppenmitgliedschaft)

Anzahl Gruppen auslesen – pro User und OU

Die Analyse der Gruppenmitgliedschaften liefert Ihnen zwei Informationen zurück. Zum einen bekommen Sie aufgelistet, in wie vielen Gruppen Ihr Benutzerobjekt direktes Mitglied ist. Zum anderen bekommen Sie aufgelistet, in wie vielen geschachtelten Gruppen („TokenGroups“) das Benutzerobjekt indirekt Mitglied ist. 

Anzahl-Gruppen-pro-User

Die Software kann auf unserer Webseite heruntergeladen werden. Sie finden außerdem detaillierte Erklärungen zu 17 verschiedenen Analysen:

Website: FirstWare AD Inspector 2015

 

 

 

 

Artikel weiterempfehlen:
  • teilen
  • tweeten
  • sharen
  • xingen
  • mailen
Artikel erstellt am: 21.07.2016
Tags: GruppenGruppenmitgliedschaftIsMemberPowerShell
0

You also might be interested in

temporaere-berechtigungen-mit-server-2016

Active Directory: Temporäre Berechtigungen mit Server 2016

Apr 26, 2016

In meinem vorangegangenen Artikel habe ich beschrieben, wie sich temporäre[...]

Powershell-Basics-New-ADUser

AD PowerShell Basics 1: New-ADUser

Apr 30, 2015

In dieser kleinen Reihe möchte ich die gebräuchlichsten Active Directory[...]

.Net Code in PowerShell

.Net Code (C#) und DLLs in Powershell verwenden

Mrz 3, 2015

Viele wissen, dass man in Powershell auch direkt .Net-Klassen verwenden[...]

1 Comment

Leave your reply.
  • Sebastian Goras
    · Antworten

    24. März 2020 at 2:39 PM

    Hi Oliver,

    eine sehr gute Funktion – es funktioniert auf Computern wo keine Active Directory Extensions installiert sind.

    Danke und alles Gute!

Leave a Reply

<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>
Cancel Reply

FirstWare IDM-Portal im Test: IT-Administrator 08-2022

 

ADFAQ-FirstAttribute

Wer schreibt ?

Team der FirstAttribute AG

Consultants und Entwickler der FirstAttribute arbeiten seit mehr als 20 Jahren in IAM- und Cloud-Transition-Projekten.
Zusammen verfügen Sie über einen wertvollen Erfahrungsschatz im Bereich Active Directory und Azure AD und teilen diesen auf Active Directory FAQ.

Neueste Artikel

  • 8 Tipps für mehr Sicherheit in Active Directory und Backups von AD
  • Azure AD Custom Security Attributes ermöglichen flexible Berechtigungsstrukturen
  • Dateiberechtigungen in MS Teams und SharePoint Online verwalten – So funktioniert es
  • AD-Gruppen in Microsoft Teams verwenden – Dynamische Gruppen in der Praxis
  • Verbindung zwischen Microsoft 365 und SharePoint Online zu Azure AD

Unsere IAM-Lösungen

Ihre IAM-Lösung: FirstWare IDM-Portal

 

my-IAM für Cloud Identity Management in Microsoft Teams

Kontakt aufnehmen

Sie haben eine Frage oder Anmerkung? Schicken Sie uns schnell eine Nachricht.

Nachricht senden
Jetzt AD Tasks vereinfachen und delegieren: FirstWare IDM-Portal

Folgen Sie uns

Kontakt

  • FirstAttribute AG
  • Am Büchele 18, 86928 Hofstetten, Germany
  • +49 89 215 442 400
  • https://www.firstattribute.com

Schlagwörter

.Net ACL Active Directory AD LDS AD Objekt Azure AD Berechtigung Cloud cmdlets Delegation Domain Controller dynamicgroup dynamische Gruppen Exchange Exchange-Ordner Exchange-Postfach Exchange Migration Federation FirstWare Get-Mailbox Global Catalog Group Policy Gruppen Gruppenmitgliedschaft IDM-Portal LDAP m365 Microsoft Azure Migration New-ADUser Novell NTFS Office 365 PowerShell QMM QMM AD QMM Exchange Quest Migration Manager Schema Set-ADUser SID SID History Update Windows 10 Windows Server 2012 R2

Neueste Kommentare

  • activedirectoryfaq.com sharepoint login - infoslist bei Windows 365 und Azure AD verstehen in Theorie und Praxis
  • Domäne Letzte Anmeldung - ObenGesichert.com bei LastLogon vs. LastLogonTimestamp
  • Teams Code Zur Anmeldung - ObenGesichert.com bei Authentifizierung für MS Teams in hybriden Netzwerken
Login
Impressum
Datenschutzerklärung

© 2023 · Active-Directory-FAQ by firstattribute.com

Prev Next