关于 Powershell Do While 循环的帮助

关于 Powershell Do While 循环的帮助

我正在编写一个 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

相关内容