Powershell 检查不同域中的组中的用户

Powershell 检查不同域中的组中的用户,powershell,active-directory,Powershell,Active Directory,我被一段代码卡住了。 我们有2个广告域,其中包含用户和组。 我正在尝试运行一个脚本,该脚本将检查用户是否是要禁用EV访问的组的成员,如果他们不是该组的成员,则将他们添加到EV启用组 我有一个域的工作,但我不能让它跨我们有两个域工作。 我希望脚本检查domain1并将其添加到domain1中的组,但如果它没有找到用户,请检查domain2并将其添加到domain2中的组 下面是我的代码摘录,但我正在努力让它识别域控制器,以便它在正确的域中寻找用户 foreach ($u in $Users

我被一段代码卡住了。 我们有2个广告域,其中包含用户和组。 我正在尝试运行一个脚本,该脚本将检查用户是否是要禁用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
        }

这一点都不难

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

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

只要根据您的域适当调整这些值,它就会正常工作。我在自己的任务中使用了与此非常类似的方法,而Try/Catch/Finally正是完成任务的工具

$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}