Listen Sie eine AD-Gruppenmitgliedschaft mit Power Query / Data Explorer auf

9672
JohnLBevan

Ich versuche, die Mitglieder einer AD-Verteilergruppe mit dem Power Query-Tool von Excel abzurufen.

Mit der Active Directory-Datenquelle kann ich alle Benutzer einer Domäne abfragen. Folgendes ist die generierte Formel:= mydomain.mycompany.com{[Category="user"]}[Objects]

Ich hoffe, einen Weg finden zu können, entweder durch Aktualisieren der Formel oder durch Hinzufügen von Schritten, damit die Abfrage nur nach Benutzern filtern kann, die Mitglied einer bestimmten Sicherheitsgruppe sind (idealerweise würde dies rekursive Mitgliedschaften umfassen).

Ich verwende Power Query, das von http://www.microsoft.com/de/de/download/details.aspx?id=39379 mit Excel 2013 heruntergeladen wurde .

Danke im Voraus.

2
Möglicherweise erhalten Sie hier keine Antwort. Wenn Sie dies nicht tun, möchten Sie möglicherweise Ihre eigene Frage markieren und nach einer Migration zu [StackOverflow] (http://stackoverflow.com/) fragen, da Sie eine Datenbank abfragen. Hier liegt dies möglicherweise außerhalb des Kenntnisbereichs. je nachdem, wer Ihre Frage sieht. Raystafarian vor 10 Jahren 1
Verwenden Sie VBA und blättern Sie über die Ergebnisse, um nach den bestimmten Benutzern zu suchen. Ƭᴇcʜιᴇ007 vor 10 Jahren 1
Danke, @Raystafarian - wird es tun, wenn ich hier keine Antwort bekomme; Ich habe auf dieser Seite angefangen, da es keinen "Code" / Excel-Standardfunktionalität gibt. Daher hielt ich dies für angemessener (obwohl es eine Grenzlinie ist). JohnLBevan vor 10 Jahren 0
Thanks @ techie007 - Ich habe eigentlich schon eine VBA-Lösung bekommen; Ich spiele mit ein paar neuen Spielsachen in Office und versuche auch, von Makros zur Verwendung von Standardfunktionalitäten überzugehen, die andere, weniger technisch versierte Leute möglicherweise leichter an ihre Bedürfnisse anpassen können. JohnLBevan vor 10 Jahren 0
Warum sollten weniger Technikfreaks Zugriff auf die AD-Datenbank haben? Sie sollten einfach zur Verteilergruppe gehen, sie erweitern und die darin enthaltenen Personen kopieren. Raystafarian vor 10 Jahren 0

2 Antworten auf die Frage

2
ScaleOvenStove

Hier ist ein Beispiel:

let Source = ActiveDirectory.Domains(), <domain name> = Source{[Domain="YourDomain"]}[#"Object Categories"], group = <domain name>{[Category="group"]}[Objects], FilteredRows = Table.SelectRows(group, each Text.Contains([distinguishedName], "SomeGroupNameFilter")), #"CN=SomeGroupName,OU=SomeOU,OU=All,DC=SomeDC,DC=net" = FilteredRows{[distinguishedName="CN=SomeGroupName,OU=SomeOU,OU=All,DC=SomeDC,DC=net"]}[group], member = #"CN=SomeGroupName,OU=SomeOU,OU=All,DC=SomeDC,DC=net"[member], TableFromList = Table.FromList(member, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Expand Column1" = Table.ExpandRecordColumn(TableFromList, "Column1", {"department", "title", "sAMAccountName"}, {"Column1.department", "Column1.title", "Column1.sAMAccountName"}) in #"Expand Column1" 
Gutes Tutorial unter [Abrufen einer Liste von AD-Gruppen und ihrer Mitglieder mit PowerQuery] (https://matt40k.uk/2016/06/getting-a-list-of-ad-groups-und-der-mit- ihrer-mit-mit-kraftquery) /) matt wilkie vor 6 Jahren 0
0
SherlockSpreadsheets

Die Antwort von ScaleOvenStove ist ein gutes Beispiel, aber es ist viel Bearbeitung erforderlich, damit es funktioniert. Ich habe ein PQ-Skript erstellt, das einen Parameterwert verwendet, um den Abfrageprozess zu vereinfachen. Ich habe den folgenden Code bereitgestellt, falls er anderen Personen, die dies benötigen, hilft.

Die erste Abfrage gibt ListAllGroups_ADalle Gruppen in der Domäne zurück, und ich habe auch eine Funktion, die die Anzahl der Mitglieder in jeder Gruppe zurückgibt.

Die zweite Abfrage gibt AD_GroupUsersalle Benutzer in einer ausgewählten Gruppe zurück. Damit diese Abfrage funktioniert, müssen Sie einen Parameter erstellen, der paramADGroupNameals Datentyp 'Text' bezeichnet wird, und den Gruppennamen als Parameterwert eingeben ( Hinweis: Verwenden Sie die erste Abfrage, um einen Gruppennamen zu suchen ).

HINWEIS: In beiden Abfragen müssen Sie den Text YourDomainHeredurch Ihren Domänennamen ersetzen . Das sind insgesamt 4 Änderungen, und dies sollten alle Änderungen sein, die erforderlich sind, bevor das Skript die richtigen Daten abruft.

ListAllGroups_AD

let  Source = ActiveDirectory.Domains("`YourDomainHere`"),  MyDomainName = Source{[Domain="`YourDomainHere`]}[#"Object Categories"],  group1 = MyDomainName{[Category="group"]}[Objects],  #"Expanded securityPrincipal" = Table.ExpandRecordColumn(group1, "securityPrincipal", {"sAMAccountName"}, {"securityPrincipal.sAMAccountName"}),  #"Sorted Rows" = Table.Sort(#"Expanded securityPrincipal",{{"securityPrincipal.sAMAccountName", Order.Ascending}}),  #"Reordered Columns" = Table.ReorderColumns(#"Sorted Rows",{"securityPrincipal.sAMAccountName", "displayName", "group", "top", "msExchMailStorage", "posixGroup", "msExchIMRecipient", "msExchBaseClass", "msExchCustomAttributes", "mailRecipient", "distinguishedName"}),  #"Expanded group" = Table.ExpandRecordColumn(#"Reordered Columns", "group", {"member"}, {"group.member"}),  fxGroupMember_Count = Table.AddColumn(#"Expanded group", "GroupMember_Count", each List.Count([group.member] as list) as number),  #"fxCount_Replaced Errors" = Table.ReplaceErrorValues(fxGroupMember_Count, {{"GroupMember_Count", 0}})  in  #"fxCount_Replaced Errors" 

AD_GroupUsers

let  Source = ActiveDirectory.Domains("`YourDomainHere`"),  MyDomainName = Source{[Domain="`YourDomainHere`"]}[#"Object Categories"],  group = MyDomainName{[Category="group"]}[Objects],  #"Expanded securityPrincipal" = Table.ExpandRecordColumn(group, "securityPrincipal", {"sAMAccountName"}, {"securityPrincipal.sAMAccountName"}),  #"Filtered Rows" = Table.SelectRows(#"Expanded securityPrincipal", each [securityPrincipal.sAMAccountName] = paramADGroupName),  #"Filtered Rows_Group" = #"Filtered Rows"{[securityPrincipal.sAMAccountName= paramADGroupName]}[group],  MembersList = #"Filtered Rows_Group"[member],  TableFromList = Table.FromList(MembersList, Splitter.SplitByNothing(), null, null, ExtraValues.Error),  #"Expand Column" = Table.ExpandRecordColumn(TableFromList, "Column1",,  {"GroupName", "MembersDisplayName", "sAMAccountName", "userPrincipleName", "department"}),  #"Replaced Value" = Table.ReplaceValue(#"Expand Column",null,paramADGroupName,Replacer.ReplaceValue,{"GroupName"}),  #"Sorted Rows" = Table.Sort(#"Replaced Value",{{"GroupName", Order.Ascending}, {"MembersDisplayName", Order.Ascending}})  in  #"Sorted Rows"