我被一段代码困住了。 我们有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
}
答案 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正是这个工具完成工作。