【发布时间】:2019-06-29 15:28:46
【问题描述】:
请找到以下示例脚本。在此脚本中,已给出单个输入 $Name 以生成唯一的登录名。
但是,例如,如果从 $Name 下的 CSV 导入多个名称列表,如何将列表中的每个名称传递给函数以生成唯一的登录名并将每个输出的唯一登录名存储到 CSV。
示例脚本:
$Name = "Sample Name"
## Declaring count to 0 .
$i=0
#Define login name
Function New($Count)
{
$Splitter = $Name.Split(' ')
$Add1 = $Splitter[0].Substring(0,1)
$Add2 = $Splitter[1].Substring(0,1)
switch($Count)
{
0 {return $LoginName = $Add1+$Add2}
1 {return $LoginName = $Add2+$Add1}
default {return $LoginName = $Add1+$Add2+$Add1}
}
}
#Check AD exist
Function check-ADuser($loginName){
IF(Get-ADUser -f {samAccountname -eq $LoginName})
{return $result= $False}
else {return $result = $True}}
return $result
#Generate login name
Do{
$loginName = New($i)
$ADresult = check-ADuser -loginName $loginName
$i++
}while($result -ne 'True')
【问题讨论】:
-
您需要一个
foreach(){}循环或for(){}循环来迭代一个集合 -
你在哪里定义了
Check-ADUser? -
@trebleCode 我仍然不确定逻辑。例如,使用 foreach() 循环可以迭代多个用户并存储在数组中,但是根据上面的代码,我们如何将数组中的每个存储项传递给“Do While”循环以生成多个唯一的登录名。
-
@TheIncorrigible1 我错过了代码的一部分,包括在 AD 中定义用户存在的函数。请让我知道更多信息。
标签: powershell automation active-directory powershell-2.0 powershell-3.0