See below
#memberOf is an array of distinguished names for the groups
#the user is a member of
$memberOf = @(
'CN=Group1,OU=Groups,DC=mydomain,DC=com',
'CN=Group2,OU=Groups,DC=mydomain,DC=com',
'CN=Group3,OU=Groups,DC=mydomain,DC=com',
'CN=Group4,OU=Groups,DC=mydomain,DC=com',
'CN=Group10,OU=Groups,DC=mydomain,DC=com'
)
#Filter with WildCard
$memberOf | Where{$_ -notlike '*Group1*'}
Output:
PS C:\Users\Rob> $memberOf | Where{$_ -notlike '*Group1*'}
CN=Group2,OU=Groups,DC=mydomain,DC=com
CN=Group3,OU=Groups,DC=mydomain,DC=com
CN=Group4,OU=Groups,DC=mydomain,DC=com
#or Filter with static reference
$exclude = @(
'CN=Group1,OU=Groups,DC=mydomain,DC=com',
'CN=Group3,OU=Groups,DC=mydomain,DC=com'
)
$memberOf | Where{$exclude -notcontains $_}
Output
CN=Group2,OU=Groups,DC=mydomain,DC=com
CN=Group4,OU=Groups,DC=mydomain,DC=com
CN=Group10,OU=Groups,DC=mydomain,DC=com
So you code would be something like:
Get-ADUser -Identity user0 -Properties memberof |
Select-Object -ExpandProperty memberof |
Where{$_ -notlike '*Group1*'} |
Add-ADGroupMember -Members user1