Public/Add-NSPADGroupMember.ps1
|
function Add-NSPADGroupMember { <# .SYNOPSIS Nests -MemberIdentity into -GroupIdentity unless it is already a member. Idempotent; dry-run aware (Invoke-NSPStep). .EXAMPLE Add-NSPADGroupMember -GroupIdentity 'CN=VPNFW_DNS_Group,OU=FWRules,...' -MemberIdentity 'CN=VPN_Staff,...' #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory)][string]$GroupIdentity, [Parameter(Mandatory)][string]$MemberIdentity ) if (-not $PSCmdlet.ShouldProcess("$GroupIdentity", "Add member '$MemberIdentity' if it is not one already")) { return } Use-NSPADDependency Assert-NSPADCommand Get-ADGroupMember $already = @(Get-ADGroupMember -Identity $GroupIdentity -ErrorAction SilentlyContinue | Where-Object { $_.DistinguishedName -eq $MemberIdentity -or $_.SamAccountName -eq $MemberIdentity -or $_.Name -eq $MemberIdentity }) if ($already.Count -gt 0) { Write-Host " '$MemberIdentity' is already a member of '$GroupIdentity' - skipping." -ForegroundColor Gray return } Invoke-NSPStep -Description "Nest '$MemberIdentity' into '$GroupIdentity'" ` -Commands @("Add-ADGroupMember -Identity '$GroupIdentity' -Members '$MemberIdentity'") ` -Action { Add-ADGroupMember -Identity $GroupIdentity -Members $MemberIdentity } | Out-Null } |