检查用户是否存在于组

时间:2017-11-10 13:43:56

标签: powershell active-directory powershell-v4.0

我不能让这个脚本给出正确的输出,我想检查一个用户(来自Users.csv)是否存在于一个组中(每个域中有一个组,这是一个多域环境)。 / p>

我认为问题在于第二个foreach。 现在输出是每个域的正确行数,但他们都说:

  组中不存在

aa@aa.aa bb@bb.bb PSO_StdPasswordPolicyWithNoAccountLockout

它应该说:

  

aa@aa.aa在小组中不存在   PSO_StdPasswordPolicyWithNoAccountLockout

     

bb@bb.bb在组中不存在   PSO_StdPasswordPolicyWithNoAccountLockout

Users.csv包含EmailAddressDisplayNameobjectGUID

Clear-Host

$user = Import-Csv ".\Users.csv" 
$group = "PSO_StdPasswordPolicyWithNoAccountLockout"

$domains = (Get-ADForest).domains

foreach ($domain in $domains) {

    Write-Host ="********** - $domain - **********" -ForegroundColor Yellow

    $members = Get-ADGroupMember -Identity $group -Server $domain | Select-Object objectGUID
    $exportMembers = $members | Export-Csv .\RemoveUsersTemp\$domain.csv -NoTypeInformation
    $importFile = ".\RemoveUsersTemp\$domain.csv"
    $amembers = import-csv $importFile | Select-Object objectGUID

    foreach ($amember in $amembers) {
        If ($amembers.objectGUID -contains $user.objectGUID) {
            Write-Host $user.EmailAddress"exists in the group $group " -ForegroundColor Green
        }
        Else {
            Write-Host $user.EmailAddress"does not exists in the group $group" -ForegroundColor Red
        }
    }

}

1 个答案:

答案 0 :(得分:0)

这是因为您在第二个循环中使用了$user,但是您没有循环$user,所以您要引用整个$user数组,其内容为{ {1}}。