Functions/copy-WITusersgroups.ps1
<#
.Synopsis (c) Witcon AB Kopiera grupper från en användare .DESCRIPTION Kopierar gruppmedlemskap från en användare till en annan .EXAMPLE Grupperna från Sourse sätts på destination extra grupper tas bort från Destination copy-WITusersgroups -SourceSam aa -DestinationSam bb -Deleteextragroups .EXAMPLE Grupperna från Sourse som saknas adderas på destination copy-WITusersgroups -SourceSam aa -DestinationSam bb #> function copy-WITusersgroups { [CmdletBinding()] Param ( # Param1 help description [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] $SourceSam, [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=1)] $DestinationSam, [Switch]$Deleteextragroups ) Begin { } Process { $Sourcegroups=@() $Destgroups=@() $Sourcegroups+=Get-ADUser $SourceSam -Property MemberOf | Select -ExpandProperty MemberOf | Get-ADGroup | Select -ExpandProperty SamAccountName $Destgroups+=Get-ADUser $DestinationSam -Property MemberOf | Select -ExpandProperty MemberOf | Get-ADGroup | Select -ExpandProperty SamAccountName $compgroupsAdd=Compare-Object $Sourcegroups -DifferenceObject $Destgroups|where Sideindicator -eq '<=' |select -ExpandProperty Inputobject $compgroupsDelete=Compare-Object $Sourcegroups -DifferenceObject $Destgroups|where Sideindicator -eq '=>' |select -ExpandProperty Inputobject Write-Host "Groups added" $compgroupsAdd $compgroupsAdd|% { Add-ADGroupMember -Identity $_ -Members $DestinationSam } if ($Deleteextragroups) { write-host "Groups Removed " $compgroupsDelete $compgroupsDelete |% { Remove-ADGroupMember -Identity $_ -Members $DestinationSam -Confirm:$false } } } End { } } |