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_AD
alle 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_GroupUsers
alle Benutzer in einer ausgewählten Gruppe zurück. Damit diese Abfrage funktioniert, müssen Sie einen Parameter erstellen, der paramADGroupName
als 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 YourDomainHere
durch 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"