使用SamAccountName可用性检查循环创建AD用户

时间:2016-03-08 09:33:06

标签: powershell

我通过制作一个脚本来学习Powershell,该脚本有望在我们获得新员工或顾问时自动完成所有需要完成的工作。目前,我正在开发创建AD帐户的部分。以下是特定于此部分脚本的变量。

#Variables for preliminary SamAccountName, modifiers and initials array
$PrelSamAccountName = ("se" + [string]$GivenName.Substring(0,3) + [string]$SurName.Substring(0,3)).ToLower()
$Modifier1 = 1
$Modifier2 = 0
$InitialsArray = @("x","y","z")

这是循环。我在New-ADUser上删除了一堆参数,以减少它的混乱。

try {
#Checks if preliminary SamAccountName is taken or not
$ADCheck = Get-ADUser -Filter {SamAccountName -eq $PrelSamAccountName}
#Creates new user
New-ADUser -Name $Name -SamAccountName $PrelSamAccountName
} catch {
        #Replaces final character in preliminary SamAccountName with "1++"
        while (($ADCheck | Select-Object -ExpandProperty SamAccountName) -eq $PrelSamAccountName) {
        $PrelSamAccountName = ([string]$PrelSamAccountName.Substring(0,7) + ($Modifier1++)).ToLower()
        }
        #Changes $Initials from $null to x/y/z if an existing user has identical name as new user
        while (($ADCheck | Select-Object -ExpandProperty Name) -eq $Name) {
        $Initials = $InitialsArray[$Modifier2++]
        $Name = $GivenName + " " + $Initials + " " + $SurName
        }
    }

除了每次运行循环时创建新用户的事实外,一切都按预期工作。理想情况下,我希望它在每次运行时创建一个新用户。 :)

我假设它与$ ADCheck变量的位置有关,但在多次重写此部分之后,我根本无法使其工作。有任何想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这里有一些逻辑问题: 遵循这种方法:

Pseudocode:
while (user exist) {create new username}
new-aduser new username

PS代码:

 function new-sam
 {
    #creates new sam
 }

 $sam = "username"
 $a=$false
 while (!$a)
 {
     try {
        $a = [bool](Get-ADUser -Identity $sam )
     }
     catch {
        $a = $false; $sam = new-sam
     }
 }
 new-aduser ....