检查其他域中的组中的用户

时间:2015-04-01 15:15:10

标签: powershell active-directory

我被一段代码困住了。 我们有2个AD域,其中包含用户和组。 我正在尝试运行一个脚本,该脚本将检查用户是否是组的成员以禁用EV访问,如果他们不是该组的成员,则将它们添加到EV启用组。

我有一个域工作,但我无法让它在我们拥有的两个域中工作。 我希望脚本检查domain1并将其添加到domain1中的组,但如果找不到用户,请检查domain2并将其添加到domain2中的组。

下面是我所拥有的代码的摘录,但我正在努力让它识别域控制器,以便它在用户的正确域中查找。

    foreach ($u in $Users){
Foreach($domain in $Domainlist)
    {
    $dom =get-addomain $domain.name
    $dm = $dom.distinguishedname
    $dname = $dom.name
    $DomName = $dom.DNSRoot
    $ADdc = Get-addomaincontroller -discover -domain $domName
    $dc = $ADdc.hostname
    $User = Get-ADUser $u.name -server $dc 
    $Enablegroup = "cn=evenable,ou=users and computers," + $dom 
    $disablegroup = "cn=evdisable,ou=users and computers," + $dom    

        if ((Get-ADUser $u.name -server $dc -Properties memberof).memberof -eq $disablegroup)
        {
        $name = $u.name
        $dm = $domain.name
        Write-host "$name is a member of the $dm EV disable group" -f Yellow
        }

1 个答案:

答案 0 :(得分:0)

这一点都不难!

基本上我们只需用以下内容替换一行,我们使用PowerShell的try / catch语法。尝试第一块代码,如果有错误,请改为使用第二部分。

$User = Get-ADUser $u.name -server $dc 

try{ $User = Get-ADUser $u.name -server $dc -ErrorAction STOP}
catch {$User = Get-ADUser $u.name -server OtherDC -ErrorAction STOP
       $dom =get-addomain OtherDomain}

这样的结构的整个目标是处理尝试此分支逻辑/如果失败,请执行此操作,并确保脚本在该点之后继续运行。因此,因为您在脚本的后半部分使用$ dom来解析安全组的完整路径,所以您还需要更改Catch块中的$ dom值,正如我上面所做的那样

只需根据您的域调整这些值,它就应该正常工作。我使用的方法非常类似于我自己的任务,而Try / Catch / Finally正是这个工具完成工作。