Active Directory新ADObjects

时间:2012-06-21 13:56:48

标签: powershell active-directory powershell-v2.0 exchange-server

我正在构建一个Powershell脚本来管理通讯组和联系人。

enter image description here

但是当我创建一个新的分发组

function GroupAddGroup([string] $GroupName)
{
    $newGroup = New-DistributionGroup $GroupName;
    return $newGroup.Name
}

我必须等待5到60秒之间,直到我可以访问该组(添加成员等)。

问题是:为什么我要等?什么是解决它的最佳方式(一次需要65个soconds或300秒......)?

2 个答案:

答案 0 :(得分:0)

问题可能是复制延迟造成的。例如,它正在等待新创建的组复制到另一个域控制器或全局编录。请注意,在将通用组复制到全局编录之前,不能对其进行修改。

我自己没有尝试,但我认为要解决问题,最简单的方法是更改​​流程中的对象创建顺序。您应首先创建联系人对象,然后创建通讯组,而不是先创建通讯组,然后再创建联系人。在创建通讯组时,指定-Members并传入新创建的联系对象。

如果New-DistributionGroup抱怨无法找到新创建的联系人对象,那么您可以尝试的另一件事是在执行-DomainControllerNew-MailContact时指定要由New-DistributionGroup使用的域控制器{1}}

答案 1 :(得分:0)

到目前为止,我发现了一些正常工作的东西:

function DistributionGroupExists([string] $Identity)
{
    $timer = [diagnostics.stopwatch]::startnew()
    while ($timer.elapsed.totalseconds -lt 30){

    if (Get-DistributionGroup $Identity){
        break
    }
    else 
    {
    start-sleep -seconds 5
    }
    }

    $timer.stop()
    if (!(Get-ADObject $Identity)){Write-host "Warning: Mailbox creation failed for $user after $($timer.elapsed.totalseconds) seconds."}
    else {write-host "Mailbox creation successful for $user in $($timer.elapsed.totalseconds) seconds"}

}