Benutzer mit den meisten Antworten
Get-ADGroupMembers verbunden mit einer If Abfrage

Frage
-
Hallo Leute,
ich benötige für Auswertungszwecke von einer Gruppe alle Mitglieder mit diversen ADSI Attributen.
Das habe ich bereits gelöst, folgendes ist noch ausständig:
Ich benötige von den Gruppenmitgliedern zusätzlich noch den Manager, jedoch NUR wenn im ADSI-Attribut "employeeType" von den jeweiligen Mitgliedern "Ja" steht.
Mit einer If Funktion würde ich hier wahrscheinlich nicht weiterkommen und mit -LDAPFilter kann man wohl nur die gesamte Domain abfragen. Ist das eventuell mit SearchBase möglich?
Zusatz: Wäre es dann auch noch möglich diese beiden Commands (mit einem ist das mMn nicht realisierbar) in 1 CSV zu exportieren?
Antworten
-
Hallo,
es waere viel leichter zu helfen, wenn der Fragende mehr Infos liefern wuerde. Mir ist nicht klar wie deine Userinfos pro Groupmeber aussehen usw.
Hier einfach ein Beispiel, wo ich zwei Userobjekte in einer Tabelle ablege und and Hand des Attribut "employeeType" entscheide ob der Manger angezeigt wird oder nicht.
Ich pipe die beiden Userobjekte gegen Select-Object und dort definiere ich eine Expression die den Manger anzeigt oder nicht.
Beste Gruesse
Martin$GroupMembers = @() $PSObject = New-Object PSObject $PSObject | Add-Member -MemberType NoteProperty -Name 'samAccountName' -Value "m.mustermann" $PSObject | Add-Member -MemberType NoteProperty -Name 'eMail' -Value "m.mustermann@irgendwas.local" $PSObject | Add-Member -MemberType NoteProperty -Name 'employeeType' -Value "Ja" $PSObject | Add-Member -MemberType NoteProperty -Name 'Manager' -Value "Manager 1" $GroupMembers += $PSObject $PSObject = New-Object PSObject $PSObject | Add-Member -MemberType NoteProperty -Name 'samAccountName' -Value "f.musterfrau" $PSObject | Add-Member -MemberType NoteProperty -Name 'eMail' -Value "f.musterfrau@irgendwas.local" $PSObject | Add-Member -MemberType NoteProperty -Name 'employeeType' -Value "Nein" $PSObject | Add-Member -MemberType NoteProperty -Name 'Manager' -Value "Manager 2" $GroupMembers += $PSObject $GroupMembers | Select-Object samAccountName, eMail, @{Name="Manager"; Expression={if ($_.employeeType -eq "Ja") {$_.Manager} }} | Export-Csv C:\test.csv
Die Ausgabe wuerde dann so aussehen:
samAccountName eMail Manager
-------------- ----- -------
m.mustermann m.mustermann@irgendwas.local Manger 1
f.musterfrau f.musterfrau@irgendwas.localin der CSV so
"samAccountName","eMail","Manager"
"m.mustermann","m.mustermann@irgendwas.local","Manger 1"
"f.musterfrau","f.musterfrau@irgendwas.local",""- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 6. Mai 2013 10:51
Alle Antworten
-
Hallo,
es waere viel leichter zu helfen, wenn der Fragende mehr Infos liefern wuerde. Mir ist nicht klar wie deine Userinfos pro Groupmeber aussehen usw.
Hier einfach ein Beispiel, wo ich zwei Userobjekte in einer Tabelle ablege und and Hand des Attribut "employeeType" entscheide ob der Manger angezeigt wird oder nicht.
Ich pipe die beiden Userobjekte gegen Select-Object und dort definiere ich eine Expression die den Manger anzeigt oder nicht.
Beste Gruesse
Martin$GroupMembers = @() $PSObject = New-Object PSObject $PSObject | Add-Member -MemberType NoteProperty -Name 'samAccountName' -Value "m.mustermann" $PSObject | Add-Member -MemberType NoteProperty -Name 'eMail' -Value "m.mustermann@irgendwas.local" $PSObject | Add-Member -MemberType NoteProperty -Name 'employeeType' -Value "Ja" $PSObject | Add-Member -MemberType NoteProperty -Name 'Manager' -Value "Manager 1" $GroupMembers += $PSObject $PSObject = New-Object PSObject $PSObject | Add-Member -MemberType NoteProperty -Name 'samAccountName' -Value "f.musterfrau" $PSObject | Add-Member -MemberType NoteProperty -Name 'eMail' -Value "f.musterfrau@irgendwas.local" $PSObject | Add-Member -MemberType NoteProperty -Name 'employeeType' -Value "Nein" $PSObject | Add-Member -MemberType NoteProperty -Name 'Manager' -Value "Manager 2" $GroupMembers += $PSObject $GroupMembers | Select-Object samAccountName, eMail, @{Name="Manager"; Expression={if ($_.employeeType -eq "Ja") {$_.Manager} }} | Export-Csv C:\test.csv
Die Ausgabe wuerde dann so aussehen:
samAccountName eMail Manager
-------------- ----- -------
m.mustermann m.mustermann@irgendwas.local Manger 1
f.musterfrau f.musterfrau@irgendwas.localin der CSV so
"samAccountName","eMail","Manager"
"m.mustermann","m.mustermann@irgendwas.local","Manger 1"
"f.musterfrau","f.musterfrau@irgendwas.local",""- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 6. Mai 2013 10:51
-
Hallo Leute,
ich benötige für Auswertungszwecke von einer Gruppe alle Mitglieder mit diversen ADSI Attributen.
Das habe ich bereits gelöst
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
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' '
German ? Come to German PowerShell Forum! -
Beispiel:
$group = Read-Host "Welche Gruppe soll abgefragt werden?" Get-ADGroupMember -Identity $group | Get-ADUser -Properties GivenName,Surname,DisplayName,sAMAccountName | Select-Object GivenName,Surname,DisplayName,sAMAccountName | Export-Csv $group.csv -Encoding UTF8 -Delimiter ";"
Mehr wird bei meinem Script nicht benötigt (muss nur User tauglich sein)
Mit dem Lösungsvorschlag von "brima" kann ich leider nichts anfangen, da ich nicht weiß wie ich mein Cmdlet in seinen Code "einsetzen" soll.