我正在编写一个 powershell 脚本,用于在 AD 中创建新用户,然后为其添加邮箱。我遇到的问题是,该脚本运行速度太快,在用户跨域复制之前尝试跳转到下一步(启用用户邮箱)。
我设置了一个 do While 循环,让脚本等待看到用户,然后再继续启用邮箱,但似乎不起作用。我想要做的是让它等待返回的值是错误,然后在能够获取用户时继续。
任何援助将不胜感激!
脚本如下:
start-sleep -s 1
do {
start-sleep -s 1
$userExists = get-aduser -Identity $username | select -expandProperty enabled
write-host "." -nonewline
} while ($userExists -eq $False)
答案1
您有两种方法可以解决您的困境,其中一种您可能不知道。至于您的问题,循环没有中断,因为$false
是布尔值。布尔值是 Powershell 中的特定数据类型。您要比较的是,因为除非 cmdlet 返回用户对象,否则$null
您的变量为空。$userExists
我建议您使用的选项是使用参数向交换 cmdlet(可能Enable-Mailbox
)指定域控制器-DomainController
。
您可以使用以下代码获取系统正在与哪个域控制器通信:
$DC = (Get-ADDomainController).HostName