Skip to content

ADGroup: Changing group membership management mechanism #620

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
Oct 10, 2020
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
61668e7
Adding entry for the new Added functionality
Jul 15, 2020
7d0b5d4
Adding some settings that make sense for this repo
Jul 15, 2020
1a9a5ff
Replacing Add-ADCommonGroupMember with Set-ADCommonGroupMember and ad…
Jul 15, 2020
067ebae
Updating references to be Set-ADCommonGroupMember
Jul 15, 2020
f9f989b
Replacing Add-ADCommonGroupMember with Set-ADCommonGroupMember and ad…
Jul 15, 2020
a5d1aaa
Removing entry as it no longer has references
Jul 16, 2020
a388aa9
Fixing formatting
Jul 16, 2020
b23168f
Making requested changes
Jul 21, 2020
fda85df
Fixing removed reference
Jul 21, 2020
7bfb9ba
Resolving issues and fixing unit tests
Jul 21, 2020
6a5d6d6
Changing ADCOMMON0030 to an exception message
Aug 16, 2020
cef63fe
Applying some formatting and fixes
Aug 16, 2020
4b3c573
Updating unit tests to account for code changes
Aug 16, 2020
6fafaa4
Fixing conflict
Aug 16, 2020
e3e77c6
Trying to fix merge conflict
Aug 16, 2020
5439484
Last try to fix merge conflict
Aug 16, 2020
bbf713d
Fixing phrasing and adding coverage
Aug 16, 2020
b5f5cec
Removing extraneous catch block
Aug 16, 2020
bc1412e
Merge remote-tracking branch 'upstream/master' into master
Aug 16, 2020
9671a3a
Making requested changes
Aug 16, 2020
c67e032
Making further requested changes
Aug 18, 2020
ba0824f
Removing extraneous mock and assertion
Aug 18, 2020
d8bbba5
Mocking Assert-Module to address error scenario
Aug 18, 2020
dc99995
Refactoring multiple tests and mocking
Aug 18, 2020
19494f5
Many multiple requested changes
Aug 23, 2020
fb59544
Adding code coverage for SID scenario
Aug 23, 2020
b604586
Merge branch 'master' into master
X-Guardian Sep 27, 2020
27a1dd5
Implementing requested changes
Oct 3, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,12 @@
"powershell.codeFormatting.preset": "Custom",
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"powershell.scriptAnalysis.settingsPath": ".vscode\\analyzersettings.psd1"
"files.defaultLanguage": "powershell",
"powershell.scriptAnalysis.settingsPath": ".vscode\\analyzersettings.psd1",
"[powershell]": {
"editor.rulers": [ 120 ]
},
"[markdown]": {
"editor.rulers": [ 120 ]
},
}
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ For older change log history see the [historic changelog](HISTORIC_CHANGELOG.md)

## [Unreleased]

### Added

- ADGroup
- Added support for managing AD group membership of Foreign Security Principals. This involved completely
refactoring group membership management to utilize the `Set-ADGroup` cmdlet and referencing SID values.
([issue #619](https://github.com/dsccommunity/ActiveDirectoryDsc/issues/619)).

### Changed

- ActiveDirectoryDsc
Expand Down
51 changes: 42 additions & 9 deletions source/DSCResources/MSFT_ADGroup/MSFT_ADGroup.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -655,8 +655,6 @@ function Set-TargetResource

Assert-MemberParameters @assertMemberParameters

$membersInMultipleDomains = $false

if ($MembershipAttribute -eq 'DistinguishedName')
{
$allMembers = $Members + $MembersToInclude + $MembersToExclude
Expand All @@ -676,7 +674,6 @@ function Set-TargetResource
if ($GroupMemberDomainCount -gt 1 -or ($groupMemberDomains -ine (Get-DomainName)).Count -gt 0)
{
Write-Verbose -Message ($script:localizedData.GroupMembershipMultipleDomains -f $GroupMemberDomainCount)
$membersInMultipleDomains = $true
}
}

Expand Down Expand Up @@ -842,12 +839,24 @@ function Set-TargetResource
{
Write-Verbose -Message ($script:localizedData.RemovingGroupMembers -f $adGroupMembers.Count, $GroupName)

Remove-ADGroupMember @commonParameters -Members $adGroupMembers -Confirm:$false -ErrorAction 'Stop'
$removeMemberSplat = @{
Members = $adGroupMembers
MembershipAttribute = $MembershipAttribute
Parameters = $commonParameters
Action = 'Remove'
}
Set-ADCommonGroupMember @removeMemberSplat
}

Write-Verbose -Message ($script:localizedData.AddingGroupMembers -f $Members.Count, $GroupName)

Add-ADCommonGroupMember -Parameters $commonParameters -Members $Members -MembersInMultipleDomains:$membersInMultipleDomains
$addMemberSplat = @{
Members = $Members
MembershipAttribute = $MembershipAttribute
Parameters = $commonParameters
Action = 'Add'
}
Set-ADCommonGroupMember @addMemberSplat
}

if ($PSBoundParameters.ContainsKey('MembersToInclude') -and -not [System.String]::IsNullOrEmpty($MembersToInclude))
Expand All @@ -856,7 +865,13 @@ function Set-TargetResource

Write-Verbose -Message ($script:localizedData.AddingGroupMembers -f $MembersToInclude.Count, $GroupName)

Add-ADCommonGroupMember -Parameters $commonParameters -Members $MembersToInclude -MembersInMultipleDomains:$membersInMultipleDomains
$addMemberSplat = @{
Members = $MembersToInclude
MembershipAttribute = $MembershipAttribute
Parameters = $commonParameters
Action = 'Add'
}
Set-ADCommonGroupMember @addMemberSplat
}

if ($PSBoundParameters.ContainsKey('MembersToExclude') -and -not [System.String]::IsNullOrEmpty($MembersToExclude))
Expand All @@ -865,7 +880,13 @@ function Set-TargetResource

Write-Verbose -Message ($script:localizedData.RemovingGroupMembers -f $MembersToExclude.Count, $GroupName)

Remove-ADGroupMember @commonParameters -Members $MembersToExclude -Confirm:$false -ErrorAction 'Stop'
$removeMemberSplat = @{
Members = $MembersToExclude
MembershipAttribute = $MembershipAttribute
Parameters = $commonParameters
Action = 'Remove'
}
Set-ADCommonGroupMember @removeMemberSplat
}
}
}
Expand Down Expand Up @@ -960,15 +981,27 @@ function Set-TargetResource

Write-Verbose -Message ($script:localizedData.AddingGroupMembers -f $Members.Count, $GroupName)

Add-ADCommonGroupMember -Parameters $commonParameters -Members $Members -MembersInMultipleDomains:$membersInMultipleDomains
$addMemberSplat = @{
Members = $Members
MembershipAttribute = $MembershipAttribute
Parameters = $commonParameters
Action = 'Add'
}
Set-ADCommonGroupMember @addMemberSplat
}
elseif ($PSBoundParameters.ContainsKey('MembersToInclude') -and -not [System.String]::IsNullOrEmpty($MembersToInclude))
{
$MembersToInclude = Remove-DuplicateMembers -Members $MembersToInclude

Write-Verbose -Message ($script:localizedData.AddingGroupMembers -f $MembersToInclude.Count, $GroupName)

Add-ADCommonGroupMember -Parameters $commonParameters -Members $MembersToInclude -MembersInMultipleDomains:$membersInMultipleDomains
$addMemberSplat = @{
Members = $MembersToInclude
MembershipAttribute = $MembershipAttribute
Parameters = $commonParameters
Action = 'Add'
}
Set-ADCommonGroupMember @addMemberSplat
}
}
} #end catch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
'ConvertTo-DeploymentDomainMode'
'Restore-ADCommonObject'
'Get-ADDomainNameFromDistinguishedName'
'Add-ADCommonGroupMember'
'Set-ADCommonGroupMember'
'Get-DomainControllerObject'
'Test-IsDomainController'
'Convert-PropertyMapToObjectProperties'
Expand All @@ -53,6 +53,7 @@
'Get-ActiveDirectoryDomain'
'Get-ActiveDirectoryForest'
'Resolve-SamAccountName'
'Resolve-MembersSecurityIdentifier'
)

# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
Expand Down
Loading