none
Hilfe bei Powershell Script "MemberOf" (Active Directory) RRS feed

  • Frage

  • Hi,

    Ich benötige ein Script das folgende Informationen aller aktiven User aus dem AD ausliest:

    LogonName, Description, Name, MemberOf, LastLogon

    get-aduser -filter * -Properties MemberOf, description,lastlogondate | where-object {$_.enabled -eq $True} | ft SamAccountName,  Description, name, memberof, LastLogonDate
    Soweit funktioniert es auch.

    Bei MemberOf bekomme ich {CN=GRUPPEA, OU=OU1,DC=CONTOSO,DC=local, CN=GruppeB, OU=OU1,DC=CONTOSO,DC=local, ...)

    Hier möchte ich das nur der CN ausgegeben wird also in dem Fall nur GRUPPEA, GRUPPEB, ...

    Des Weiteren bekomme ich bei einigen Usern bei MemberOf nur {} angezeigt obwohl diese User definitiv Mitglieder einer oder mehreren Gruppen sind (zb. Domain Users).

    Danke!


    lg

    Mittwoch, 8. Februar 2012 14:54

Antworten

  • Hi Raimund,

    Vielen Dank für die Hilfe, leider hat das Script bei mir irgendwie nicht funktioniert.

    habe es jedoch jetzt anders gelöst, habe einfach im Excel gefiltert und somit passt das Ergebnis :)

    Danke für die Mühe!!

    Donnerstag, 9. Februar 2012 09:39

Alle Antworten

  • Hi,

    Du solltest nicht alle Benutzer aus dem AD lesen und dann lokal filtern, sondern das den DC übernehmen lassen. Das Attribut hierzu ist UserAccountControl. Da dies ein Bit Feld ist, muß das mit den entsprechenden LDAP Controls gefiltert werden: http://support.microsoft.com/kb/269181

    Um die Gruppennamen zu kürzen, wäre das hier eine Maßnahme:

    Get-ADUser -LDAPFilter "(&(Description=Testing)(!UserAccountControl:1.2.840.113556.1.4.803:=2))" -Properties memberOf | ForEach-Object { $_ | Add-Member -Name shortMemberOf -Force -MemberType ScriptProperty -Value { $this.MemberOf | ForEach-Object { $_.SubString(0, $Get-ADUser -LDAPFilter "(&(Description=Testing)(UserAccountControl:1.2.840.113556.1.4.803:=2))" `
    	-Properties memberOf | 
    ForEach-Object { $_ | 
    	Add-Member -Name shortMemberOf -Force -PassThru -MemberType ScriptProperty `
    	-Value { $this.MemberOf | ForEach-Object { $_.SubString(3, $_.IndexOf(',') - 3) } } }
    

    -Raimund
    Donnerstag, 9. Februar 2012 00:40
  • Hi Raimund,

    Vielen Dank für die Hilfe, leider hat das Script bei mir irgendwie nicht funktioniert.

    habe es jedoch jetzt anders gelöst, habe einfach im Excel gefiltert und somit passt das Ergebnis :)

    Danke für die Mühe!!

    Donnerstag, 9. Februar 2012 09:39
  • Hallo Reimund !

    Schön dich hier im deutschen PoSh Forum zu sehen ! :-))


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info

    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace" "


    Donnerstag, 9. Februar 2012 10:30
  • Hallo,

    ich würde den beitrag gern nochmal reaktivieren, den ich habe ein ähnliches Problem.

    Ich schreibe mir regelmäßig ein Textdatei mit den für mich wichtigen BenutzerdatenDaten, habe jetzt aber fewstgestellt das MemberOf gekürzt wird. D. h. es werden nicht alle Gruppenmitgliedschaften in die Textdatei geschrieben.

    Dies ist mein PS Script:

    import-module ActiveDirectory

    Get-ADUser -Filter * -Properties * | Select-Object -Property Name,SamAccountName,whenCreated,LastLogonDate,Description,EmailAddress,telephoneNumber,homePhone,otherHomePhone,mobile,otherMobile,facsimileTelephoneNumber,pager,otherPager,Title,Department,Company,Organization,MemberOf,enabled,accountExpires | Sort-Object -Property Name

    Wie erreiche ich das alle Gruppenmitgliedschaften geschrieben werden? Für mich ist es nicht wichtig das nur die Gruppe angezeigt wird, das auch das LDAP Pfad mit CN ,OU und DC passt schon.

    gruss max

    Dienstag, 30. April 2013 07:08
  • Nichts für ungut Max, mach lieber noch einmal ein neues Topic auf. Beantwortete Threads werden generell weniger gelesen und sind, wie es der Name schon sagt, bereits bentwortet.

    Und verwende bitte den CodeBlock, da der Text sonst rechts über den Rand hinausgeht, wie du vielleicht selber schon bemerkt hast.


    The following is my signature:

    Powershell Programmer & Advanced Lua Programmer

    Location: Switzerland

    Beside that, whenever you see a reply, you think is helpful, click "Vote As Helpful"! And whenever you see a reply being an answer to the main question of the thread, click "Mark As Answer" (if you opened the thread).

    I published the URL's for the icons in my signature.

    Please contact me, before reporting me, thank you.

    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('577076797174-87661607769657424-8687168065964').substring(($_*2),2))})-replace' '


    Dienstag, 30. April 2013 07:30
  • ok, hab ich gemacht.

    Danke

    gruss max

    Dienstag, 30. April 2013 09:23
  • Versuche es mal hiermit. Die Formatierung ist Geschmackssache.

    Import-Module ActiveDirectory
    
    Get-ADUser -Filter * -Properties * | Select-Object -Property Name,SamAccountName,whenCreated,LastLogonDate,Description,EmailAddress,telephoneNumber,homePhone,otherHomePhone,mobile,otherMobile,facsimileTelephoneNumber,pager,otherPager,Title,Department,Company,Organization,MemberOf,enabled,accountExpires |
    foreach-Object { 
    $_ | fl Name,SamAccountName,whenCreated,LastLogonDate,Description,EmailAddress,telephoneNumber,homePhone,otherHomePhone,mobile,otherMobile,facsimileTelephoneNumber,pager,otherPager,Title,Department,Company,Organization,enabled,accountExpires;
    $_.MemberOf | ForEach-Object { Write-Host $("MemberOf                 : "+$_) }
    Write-Host ""
    Write-Host "-------------------------------------------"
    }
    Dienstag, 30. April 2013 12:09