@@ -100,6 +100,51 @@ Describe 'ADGroup Membership' -Tags Integration {
100100 $loadedADGroup.member.Count | Should - Be 1
101101 }
102102
103+ It ' Can Get-ADGroupMember' {
104+ # prepare
105+ $groupCode = 4
106+ $testGroupName = " parentGroup$groupCode "
107+ $newGroup = New-ADGroup @ConnectionParam - Name $testGroupName - Verbose:$VerbosePreference - PassThru
108+ $newGroup.member.Count | Should - Be 0
109+
110+ $testUser1Name = " childUser1ForGroup$groupCode "
111+ $newUser1 = New-ADUser @ConnectionParam - Name $testUser1Name - Verbose:$VerbosePreference - PassThru
112+ $testUser2Name = " childUser2ForGroup$groupCode "
113+ $newUser2 = New-ADUser @ConnectionParam - Name $testUser2Name - Verbose:$VerbosePreference - PassThru
114+ $testChildGroupName = " childGroup$groupCode "
115+ $testChildGroup = New-ADGroup @ConnectionParam - Name $testChildGroupName - Verbose:$VerbosePreference - PassThru
116+ $testGrandchildUserName = " grandchildUser1ForGroup$groupCode "
117+ $grandchildUser = New-ADUser @ConnectionParam - Name $testGrandchildUserName - Verbose:$VerbosePreference - PassThru
118+
119+ # act
120+ Add-ADGroupMember @ConnectionParam - Identity $newGroup.distinguishedName - Members $newUser1.distinguishedName , $newUser2.distinguishedName , $testChildGroup.distinguishedName - Verbose:$VerbosePreference
121+ Add-ADGroupMember @ConnectionParam - Identity $testChildGroup.distinguishedName - Members $grandchildUser.distinguishedName - Verbose:$VerbosePreference
122+
123+ # examine
124+
125+ # # test fetch from AD
126+ $members = Get-ADGroupMember @ConnectionParam - Identity $testGroupName - Verbose:$VerbosePreference
127+ $memberDNs = $members | ForEach-Object {
128+ $_.distinguishedName.Value
129+ }
130+ $memberDNs | Should - Contain " CN=childUser1ForGroup$groupCode ,CN=Users,DC=samdom,DC=example,DC=com"
131+ $memberDNs | Should - Contain " CN=childUser2ForGroup$groupCode ,CN=Users,DC=samdom,DC=example,DC=com"
132+ $memberDNs | Should - Contain " CN=childGroup$groupCode ,CN=Users,DC=samdom,DC=example,DC=com"
133+ $memberDNs.Count | Should - Be 3
134+
135+ # # test fetch from AD recursively
136+ $memberDNs = Get-ADGroupMember @ConnectionParam - Identity $testGroupName - Verbose:$VerbosePreference - Recursive |
137+ ForEach-Object {
138+ $_.distinguishedName.Value
139+ }
140+ $memberDNs | Should - Contain " CN=childUser1ForGroup$groupCode ,CN=Users,DC=samdom,DC=example,DC=com"
141+ $memberDNs | Should - Contain " CN=childUser2ForGroup$groupCode ,CN=Users,DC=samdom,DC=example,DC=com"
142+ $memberDNs | Should - Contain " CN=childGroup$groupCode ,CN=Users,DC=samdom,DC=example,DC=com"
143+ $memberDNs | Should - Contain " CN=grandchildUser1ForGroup$groupCode ,CN=Users,DC=samdom,DC=example,DC=com"
144+ $memberDNs.Count | Should - Be 4
145+ }
146+
147+
103148 AfterEach {
104149 Write-Verbose " Cleanup in $ ( $MyInvocation.MyCommand.ScriptBlock.File | Split-Path - Leaf) ."
105150 & " $PSScriptRoot \Shared\Clear-TestObjects.ps1"
0 commit comments