Assistência com o Powershell Do While loop

1

Estou escrevendo um script PowerShell para criar um novo usuário no AD e, em seguida, adicionar uma caixa de correio a eles. O problema que estou enfrentando é que o script é executado muito rápido e tenta pular para a próxima etapa (habilitando a caixa de correio do usuário) antes que o usuário tenha replicado em todo o domínio.

Eu configurei um loop while para que o script esperasse para ver o usuário antes de ativar a caixa de correio, mas parece que não está funcionando. O que eu quero fazer é esperar que o valor retornado seja um erro e, em seguida, continuar quando ele for capaz de obter o usuário.

Qualquer ajuda seria apreciada!

O script está abaixo:

start-sleep -s 1
do {
    start-sleep -s 1
    $userExists = get-aduser -Identity $username  | select -expandProperty enabled 
    write-host "." -nonewline
} while ($userExists -eq $False)
    
por SLBL 27.04.2016 / 00:28

1 resposta

1

Você tem duas maneiras de resolver seu dilema, um dos quais você pode não saber que existe. Quanto à sua pergunta, o loop não está quebrando porque $false é um booleano. Booleanos são um tipo de dados específico no Powershell. O que você deseja comparar é $null , pois a variável $userExists é nula, a menos que o cmdlet retorne um objeto de usuário.

A opção que eu recomendo que você use é que você especifique o Controlador de domínio para o cmdlet exchange (provavelmente Enable-Mailbox ) com o parâmetro -DomainController .

Você pode obter o que um controlador de domínio está comunicando com um sistema usando o seguinte código:

$DC = (Get-ADDomainController).HostName
    
por 30.04.2016 / 11:21

Tags