Powershell копирует $ source memberof в место назначения, не копируя существующее членство $ destination и дополнительный фильтр - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь скопировать членство в группе пользователей с некоторыми исключениями. Я хотел бы скопировать исходные группы, если конечный пользователь уже не является участником. Есть некоторые группы, которые я не хочу копировать на это.

$copyfrom = Read-Host "Enter Username of User Origin" 
$copyto = Read-Host "Enter Username of User Destination"
$badstring = 'bad'
Get-ADUser $copyfrom -Properties MemberOf | Select-Object -ExpandProperty MemberOf | Where-Object { -not $_.Substring(3).StartsWith($badstring)} | Add-ADGroupMember -Members $copyto

Мне не хватает той части, где скрипт пропускает группу, членом которой уже является пользователь.

Помощь.

1 Ответ

0 голосов
/ 10 января 2020

Что-то вроде ниже должно сделать ti:

$copyfrom  = Read-Host "Enter Username of User Origin" 
$copyto    = Read-Host "Enter Username of User Destination"
$badstring = 'bad'

# get the ADUser object for the source user
$srcUser  = Get-ADUser -Filter "SamAccountName -eq '$copyfrom'" -Properties MemberOf -ErrorAction SilentlyContinue 
if (!$srcUser) {
    Write-Warning "User $copyfrom not found"
    exit
}

# get the ADUser object for the destination user
$destUser = Get-ADUser -Filter "SamAccountName -eq '$copyto'" -ErrorAction SilentlyContinue
if (!$destUser) {
    Write-Warning "User $copyto not found"
    exit
}

$srcUser | Select-Object -ExpandProperty MemberOf | 
    Where-Object { -not $_.Substring(3).StartsWith($badstring)} |
    # loop through the groups and add the user if not already a member
    ForEach-Object {
        $members = Get-ADGroupMember -Identity $_ | Select-Object -ExpandProperty SamAccountName
        if ($members -notcontains $destUser.SamAccountName) {
            $_ | Add-ADGroupMember -Members $destUser.DistinguishedName
        }
    }
...