{"id":54,"date":"2025-04-09T09:49:35","date_gmt":"2025-04-09T09:49:35","guid":{"rendered":"https:\/\/burlage.it\/?p=54"},"modified":"2025-04-18T09:45:20","modified_gmt":"2025-04-18T09:45:20","slug":"mggraph-group","status":"publish","type":"post","link":"https:\/\/burlage.it\/index.php\/2025\/04\/09\/mggraph-group\/","title":{"rendered":"MgGraph &#8211; Group"},"content":{"rendered":"\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# MgGraph - Connect to Entra AD with limited scope (example)\nConnect-MgGraph -Scopes &quot;Directory.Read.All&quot;, &quot;Group.Read.All&quot;, &quot;GroupMember.ReadWrite.All&quot;\n\n# MgGraph - Search for a group by name (examples)\nGet-MgGroup -Filter &quot;DisplayName eq 'GroupName'&quot;\nGet-MgGroup -Filter &quot;startswith(DisplayName,'GroupNa')&quot;\nGet-MgGroup -Filter &quot;DisplayName eq 'GroupNameA' or DisplayName eq 'GroupNameB'&quot;\nGet-MgGroup -Search 'Description:servergroup' -ConsistencyLevel eventual\n\n# MgGraph - Collect the groupID of a group\n$groupName = 'GroupName'\n$groupId = Get-MgGroup -Filter &quot;DisplayName eq '$groupName'&quot; | Select-Object -ExpandProperty Id\n$groupId\n\n# MgGraph - Display the number of members of a group\n$groupName = 'GroupName'\n$groupObject = Get-MgGroup -Filter &quot;displayName eq '$groupName'&quot;\n$groupId = $groupObject.Id\nGet-MgGroupMemberCount -GroupId $groupId -ConsistencyLevel eventual\n\n# MgGraph - Lookup a group by DisplayName\n$displayName = 'Group Name'\nGet-MgGroup -Filter &quot;displayName eq '$groupName'&quot;\n\n# MgGraph - Lookup a group by DisplayName and show all properties\n$displayName = 'Group Name'\nGet-MgGroup -Filter &quot;displayName eq '$groupName'&quot; | Format-List\n\n# MgGraph - List the Entra applications assigned to a group\n$displayName = 'Group Name'\n$groupId = (Get-MgGroup -Filter &quot;DisplayName eq '$displayName'&quot;).Id\n$assignedApplications = Get-MgGroupAppRoleAssignment -GroupId $groupId | Sort-Object ResourceDisplayName \n$assignedApplications | Format-Table ResourceDisplayName,Id, AppRoleId, PrincipalDisplayName -AutoSize\n\n# MgGraph - Count the members of an Entra group\n$groupName = 'Group Name'\n$groupId = Get-MgGroup -Filter &quot;DisplayName eq '$groupName'&quot; | Select-Object -ExpandProperty Id\n(Get-MgGroupMember -GroupId $groupId -All).Count\n\n# MgGraph - Display deleted groups\nGet-MgDirectoryDeletedItemAsGroup -All\n\n# MgGraph - Display all dynamic groups\nGet-MgGroup -Filter &quot;GroupTypes\/any(x:x eq 'DynamicMembership')&quot;\n\n# MgGraph - Display all dynamic groups sorted on creation time\nGet-MgGroup -Filter &quot;GroupTypes\/any(x:x eq 'DynamicMembership')&quot; | Select-Object -Property DisplayName,CreatedDateTime | Sort-Object -Property CreatedDateTime\n\n# MgGraph - Display all groups created between now and one year ago\nGet-MgGroup -Filter &quot;CreatedDateTime ge $((Get-Date).AddYears(-1).ToString(&quot;s&quot;))Z&quot; -ConsistencyLevel eventual -CountVariable Count\n\n# MgGraph - Display all groups created between now and one year ago and that start with a specific string \nGet-MgGroup -Filter &quot;CreatedDateTime ge $((Get-Date).AddYears(-1).ToString(&quot;s&quot;))Z and startsWith(Displayname,'xx-yyy-')&quot; -ConsistencyLevel eventual -CountVariable Count\n\n# MgGraph - Display all details of a group\nGet-MgGroup -Filter &quot;DisplayName eq 'GroupName'&quot; | Format-List\nGet-MgGroup -GroupId '00000000-0000-0000-0000-000000000000' | Format-List\n\n# MgGraph - Display the membershiprule of a dynamic group\n(Get-MgGroup -Filter &quot;DisplayName eq 'GroupName'&quot;).MemberShipRule\n\n# MgGraph - Display the membershiprule of a dynamic group\n$groupName = 'GroupName'\nGet-MgGroup -Filter &quot;DisplayName eq '$groupName'&quot; | Select-Object -Property 'MemberShipRule'\n\n# MgGraph - Display the membershiprule of a dynamic group\n$groupName = 'GroupName'\nGet-MgGroup -Filter &quot;DisplayName eq '$groupName'&quot; | Select-Object -ExpandProperty 'MemberShipRule'\n\n# MgGroup - Display deleted groups in Entra and display the output in a seperate window\nConnect-MgGraph -Scopes Directory.Read.All, Group.ReadWrite.All\n[array]$DeletedGroups = Get-MgDirectoryDeletedItemAsGroup -All\nIf ($DeletedGroups.count -eq 0) { Write-Host &quot;No recoverable groups can be found - exiting&quot;; break}\n$Report = [System.Collections.Generic.List[Object]]::new(); $Now = Get-Date\nForEach ($Group in $DeletedGroups) {\n     [datetime]$DeletedDate = $Group.deletedDateTime\n     $PermanentRemovalDue = Get-Date($DeletedDate).AddDays(30)\n     $TimeUntilRemoval = $PermanentRemovalDue - $Now\n     $ReportLine = [PSCustomObject]@{ \n          Group                = $Group.displayName\n          Id                   = $Group.id\n          Deleted              = $Group.deletedDateTime\n          PermanentDeleteOn    = Get-Date($PermanentRemovalDue) -format g\n          DaysRemaining        = $TimeUntilRemoval.Days } \n       $Report.Add($ReportLine) \n}\n$Report | Sort-Object {$_.PermanentDeleteOn -as [datetime]} | Out-GridView\n\n# MgGraph - Display all members of a group by DisplayName and UPN, sorted by DisplayName and count the total\n$groupDisplayName = 'entraGroupName'\n$groupId = Get-MgGroup -Filter &quot;DisplayName eq '$groupDisplayName'&quot; | Select-Object -ExpandProperty 'Id'\n$allMembers = Get-MgGroupMember -GroupId $groupId -All\n$allMemberDisplayName = foreach ($member in $allMembers) {Get-MgUser -UserId $member.Id | Select-Object -Property 'Id','DisplayName','UserPrincipalName'} \n$allMemberDisplayName | Sort-Object -Property 'DisplayName'\n$allMemberDisplayName.Count\n\n\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Connect to Entra AD with limited scope (example)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Connect-MgGraph<\/span><span style=\"color: #D4D4D4\"> -Scopes <\/span><span style=\"color: #CE9178\">&quot;Directory.Read.All&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;Group.Read.All&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;GroupMember.ReadWrite.All&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Search for a group by name (examples)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;DisplayName eq &#39;GroupName&#39;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;startswith(DisplayName,&#39;GroupNa&#39;)&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;DisplayName eq &#39;GroupNameA&#39; or DisplayName eq &#39;GroupNameB&#39;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Search <\/span><span style=\"color: #CE9178\">&#39;Description:servergroup&#39;<\/span><span style=\"color: #D4D4D4\"> -ConsistencyLevel eventual<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Collect the groupID of a group<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;GroupName&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupId<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;DisplayName eq &#39;<\/span><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Select-Object<\/span><span style=\"color: #D4D4D4\"> -ExpandProperty Id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupId<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display the number of members of a group<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;GroupName&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupObject<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;displayName eq &#39;<\/span><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupId<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">$groupObject<\/span><span style=\"color: #DCDCAA\">.Id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroupMemberCount<\/span><span style=\"color: #D4D4D4\"> -GroupId <\/span><span style=\"color: #9CDCFE\">$groupId<\/span><span style=\"color: #D4D4D4\"> -ConsistencyLevel eventual<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Lookup a group by DisplayName<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$displayName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;Group Name&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;displayName eq &#39;<\/span><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Lookup a group by DisplayName and show all properties<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$displayName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;Group Name&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;displayName eq &#39;<\/span><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Format-List<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - List the Entra applications assigned to a group<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$displayName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;Group Name&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupId<\/span><span style=\"color: #D4D4D4\"> = (<\/span><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;DisplayName eq &#39;<\/span><span style=\"color: #9CDCFE\">$displayName<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><span style=\"color: #D4D4D4\">).Id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$assignedApplications<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-MgGroupAppRoleAssignment<\/span><span style=\"color: #D4D4D4\"> -GroupId <\/span><span style=\"color: #9CDCFE\">$groupId<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Sort-Object<\/span><span style=\"color: #D4D4D4\"> ResourceDisplayName <\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$assignedApplications<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Format-Table<\/span><span style=\"color: #D4D4D4\"> ResourceDisplayName,Id, AppRoleId, PrincipalDisplayName -AutoSize<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Count the members of an Entra group<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;Group Name&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupId<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;DisplayName eq &#39;<\/span><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Select-Object<\/span><span style=\"color: #D4D4D4\"> -ExpandProperty Id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">Get-MgGroupMember<\/span><span style=\"color: #D4D4D4\"> -GroupId <\/span><span style=\"color: #9CDCFE\">$groupId<\/span><span style=\"color: #D4D4D4\"> -All).Count<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display deleted groups<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgDirectoryDeletedItemAsGroup<\/span><span style=\"color: #D4D4D4\"> -All<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display all dynamic groups<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;GroupTypes\/any(x:x eq &#39;DynamicMembership&#39;)&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display all dynamic groups sorted on creation time<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;GroupTypes\/any(x:x eq &#39;DynamicMembership&#39;)&quot;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Select-Object<\/span><span style=\"color: #D4D4D4\"> -Property DisplayName,CreatedDateTime | <\/span><span style=\"color: #DCDCAA\">Sort-Object<\/span><span style=\"color: #D4D4D4\"> -Property CreatedDateTime<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display all groups created between now and one year ago<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;CreatedDateTime ge <\/span><span style=\"color: #569CD6\">$(<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">Get-Date<\/span><span style=\"color: #D4D4D4\">).AddYears(<\/span><span style=\"color: #B5CEA8\">-1<\/span><span style=\"color: #D4D4D4\">).ToString(<\/span><span style=\"color: #CE9178\">&quot;s&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">)<\/span><span style=\"color: #CE9178\">Z&quot;<\/span><span style=\"color: #D4D4D4\"> -ConsistencyLevel eventual -CountVariable Count<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display all groups created between now and one year ago and that start with a specific string <\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;CreatedDateTime ge <\/span><span style=\"color: #569CD6\">$(<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">Get-Date<\/span><span style=\"color: #D4D4D4\">).AddYears(<\/span><span style=\"color: #B5CEA8\">-1<\/span><span style=\"color: #D4D4D4\">).ToString(<\/span><span style=\"color: #CE9178\">&quot;s&quot;<\/span><span style=\"color: #D4D4D4\">)<\/span><span style=\"color: #569CD6\">)<\/span><span style=\"color: #CE9178\">Z and startsWith(Displayname,&#39;xx-yyy-&#39;)&quot;<\/span><span style=\"color: #D4D4D4\"> -ConsistencyLevel eventual -CountVariable Count<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display all details of a group<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;DisplayName eq &#39;GroupName&#39;&quot;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Format-List<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -GroupId <\/span><span style=\"color: #CE9178\">&#39;00000000-0000-0000-0000-000000000000&#39;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Format-List<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display the membershiprule of a dynamic group<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;DisplayName eq &#39;GroupName&#39;&quot;<\/span><span style=\"color: #D4D4D4\">).MemberShipRule<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display the membershiprule of a dynamic group<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;GroupName&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;DisplayName eq &#39;<\/span><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Select-Object<\/span><span style=\"color: #D4D4D4\"> -Property <\/span><span style=\"color: #CE9178\">&#39;MemberShipRule&#39;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display the membershiprule of a dynamic group<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;GroupName&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;DisplayName eq &#39;<\/span><span style=\"color: #9CDCFE\">$groupName<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Select-Object<\/span><span style=\"color: #D4D4D4\"> -ExpandProperty <\/span><span style=\"color: #CE9178\">&#39;MemberShipRule&#39;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGroup - Display deleted groups in Entra and display the output in a seperate window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">Connect-MgGraph<\/span><span style=\"color: #D4D4D4\"> -Scopes Directory.Read.All, Group.ReadWrite.All<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #569CD6\">array<\/span><span style=\"color: #D4D4D4\">]<\/span><span style=\"color: #9CDCFE\">$DeletedGroups<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-MgDirectoryDeletedItemAsGroup<\/span><span style=\"color: #D4D4D4\"> -All<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">If<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">$DeletedGroups<\/span><span style=\"color: #DCDCAA\">.count<\/span><span style=\"color: #D4D4D4\"> -eq <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">) { <\/span><span style=\"color: #DCDCAA\">Write-Host<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&quot;No recoverable groups can be found - exiting&quot;<\/span><span style=\"color: #D4D4D4\">; <\/span><span style=\"color: #C586C0\">break<\/span><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$Report<\/span><span style=\"color: #D4D4D4\"> = [<\/span><span style=\"color: #569CD6\">System.Collections.Generic.List<\/span><span style=\"color: #D4D4D4\">[<\/span><span style=\"color: #569CD6\">Object<\/span><span style=\"color: #D4D4D4\">]]::new(); <\/span><span style=\"color: #9CDCFE\">$Now<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-Date<\/span><\/span>\n<span class=\"line\"><span style=\"color: #C586C0\">ForEach<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">$Group<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$DeletedGroups<\/span><span style=\"color: #D4D4D4\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     [<\/span><span style=\"color: #569CD6\">datetime<\/span><span style=\"color: #D4D4D4\">]<\/span><span style=\"color: #9CDCFE\">$DeletedDate<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">$Group<\/span><span style=\"color: #DCDCAA\">.deletedDateTime<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #9CDCFE\">$PermanentRemovalDue<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-Date<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">$DeletedDate<\/span><span style=\"color: #D4D4D4\">).AddDays(<\/span><span style=\"color: #B5CEA8\">30<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #9CDCFE\">$TimeUntilRemoval<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">$PermanentRemovalDue<\/span><span style=\"color: #D4D4D4\"> - <\/span><span style=\"color: #9CDCFE\">$Now<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">     <\/span><span style=\"color: #9CDCFE\">$ReportLine<\/span><span style=\"color: #D4D4D4\"> = [<\/span><span style=\"color: #569CD6\">PSCustomObject<\/span><span style=\"color: #D4D4D4\">]<\/span><span style=\"color: #569CD6\">@<\/span><span style=\"color: #D4D4D4\">{ <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">Group<\/span><span style=\"color: #D4D4D4\">                = <\/span><span style=\"color: #9CDCFE\">$Group<\/span><span style=\"color: #DCDCAA\">.displayName<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">Id<\/span><span style=\"color: #D4D4D4\">                   = <\/span><span style=\"color: #9CDCFE\">$Group<\/span><span style=\"color: #DCDCAA\">.id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">Deleted<\/span><span style=\"color: #D4D4D4\">              = <\/span><span style=\"color: #9CDCFE\">$Group<\/span><span style=\"color: #DCDCAA\">.deletedDateTime<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">PermanentDeleteOn<\/span><span style=\"color: #D4D4D4\">    = <\/span><span style=\"color: #DCDCAA\">Get-Date<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">$PermanentRemovalDue<\/span><span style=\"color: #D4D4D4\">) -format g<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">DaysRemaining<\/span><span style=\"color: #D4D4D4\">        = <\/span><span style=\"color: #9CDCFE\">$TimeUntilRemoval<\/span><span style=\"color: #DCDCAA\">.Days<\/span><span style=\"color: #D4D4D4\"> } <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #9CDCFE\">$Report<\/span><span style=\"color: #DCDCAA\">.Add<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">$ReportLine<\/span><span style=\"color: #D4D4D4\">) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$Report<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Sort-Object<\/span><span style=\"color: #D4D4D4\"> {<\/span><span style=\"color: #9CDCFE\">$_<\/span><span style=\"color: #DCDCAA\">.PermanentDeleteOn<\/span><span style=\"color: #D4D4D4\"> -as [<\/span><span style=\"color: #569CD6\">datetime<\/span><span style=\"color: #D4D4D4\">]} | <\/span><span style=\"color: #DCDCAA\">Out-GridView<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A9955\"># MgGraph - Display all members of a group by DisplayName and UPN, sorted by DisplayName and count the total<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupDisplayName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&#39;entraGroupName&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$groupId<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-MgGroup<\/span><span style=\"color: #D4D4D4\"> -Filter <\/span><span style=\"color: #CE9178\">&quot;DisplayName eq &#39;<\/span><span style=\"color: #9CDCFE\">$groupDisplayName<\/span><span style=\"color: #CE9178\">&#39;&quot;<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Select-Object<\/span><span style=\"color: #D4D4D4\"> -ExpandProperty <\/span><span style=\"color: #CE9178\">&#39;Id&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$allMembers<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #DCDCAA\">Get-MgGroupMember<\/span><span style=\"color: #D4D4D4\"> -GroupId <\/span><span style=\"color: #9CDCFE\">$groupId<\/span><span style=\"color: #D4D4D4\"> -All<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$allMemberDisplayName<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #C586C0\">foreach<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #9CDCFE\">$member<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">in<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">$allMembers<\/span><span style=\"color: #D4D4D4\">) {<\/span><span style=\"color: #DCDCAA\">Get-MgUser<\/span><span style=\"color: #D4D4D4\"> -UserId <\/span><span style=\"color: #9CDCFE\">$member<\/span><span style=\"color: #DCDCAA\">.Id<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Select-Object<\/span><span style=\"color: #D4D4D4\"> -Property <\/span><span style=\"color: #CE9178\">&#39;Id&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #CE9178\">&#39;DisplayName&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><span style=\"color: #CE9178\">&#39;UserPrincipalName&#39;<\/span><span style=\"color: #D4D4D4\">} <\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$allMemberDisplayName<\/span><span style=\"color: #D4D4D4\"> | <\/span><span style=\"color: #DCDCAA\">Sort-Object<\/span><span style=\"color: #D4D4D4\"> -Property <\/span><span style=\"color: #CE9178\">&#39;DisplayName&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #9CDCFE\">$allMemberDisplayName<\/span><span style=\"color: #DCDCAA\">.Count<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-54","post","type-post","status-publish","format-standard","hentry","category-powershell"],"_links":{"self":[{"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/posts\/54","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/comments?post=54"}],"version-history":[{"count":12,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/posts\/54\/revisions"}],"predecessor-version":[{"id":107,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/posts\/54\/revisions\/107"}],"wp:attachment":[{"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/media?parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/categories?post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/burlage.it\/index.php\/wp-json\/wp\/v2\/tags?post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}