Powershell - 为Active Directory生成用户名

时间:2014-04-23 14:44:10

标签: powershell active-directory

我正在尝试创建一个脚本,用于创建一个唯一的用户I Active Directory。

在脚本创建用户之前,如果生成的用户名存在,则需要通过询问两个不同的域来确保用户名可用。问题是如果有必要,我不会如何生成新的用户名或重新运行部分脚本。假设如果生成的用户名存在于其中一个域中,我将不会生成新的用户名并再次使用新的用户名。这是我到目前为止所做的。

Import-Module ActiveDirectory

$firstname = "Test"
$lastname = "Tester"

$SecondaryDomain = "server1.domain1.net"
$PrimaryDomain = "server2.domain2.net"
$ErrorActionPreference = "SilentlyContinue"

$Generate = [Char[]]"$firstname$lastname"
$Generatedusername = ($Generate | Get-random -Count 3) -join ""
Write-host $Generatedusername

        if (Get-ADUser -Filter {SamAccountName -eq $Generatedusername} -Server $PrimaryDomain)
            {
            #If the variable equals 1 the user exists
                $PrimaryDomainOK = "1"
            }
            else
            {
                $PrimaryDomainOK = "0"
            }




        if (Get-ADUser -Filter {SamAccountName -eq $Generatedusername} -Server $SecondaryDomain)
            {
            #If the variable equals 1 the user exists
                $SecondaryDomainOK = "1"
            }
            else
            {
                $SecondaryDomainOK = "0"
            }


Write-host "Primary Domain $PrimaryDomainOK"
Write-host "Secondary Domain $SecondaryDomainOK"


If ($PrimaryDomainOK -and $SecondaryDomainOK -eq 0)
{
Write-host "Creating Account"
}
Else
{
Write-host "Can't create account"
}

1 个答案:

答案 0 :(得分:1)

添加 while 语句,其中包含您的生成/验证,用于检查$PrimaryDomainOK$SecondaryDomainOK的状态。

...
$Generate = [Char[]]"$firstname$lastname"
while(($PrimaryDomainOK -ne 0) -and ($SecondaryDomainOK -ne 0)) {
    $Generatedusername = ($Generate | Get-random -Count 3) -join ""
    Write-host $Generatedusername
    ...        
    ...
    ...
    If ($PrimaryDomainOK -and $SecondaryDomainOK -eq 0)
    {
    Write-host "Creating Account"
    }
    Else
    {
    Write-host "Can't create account"
    }

}

记住结束括号。