请找到以下示例脚本。在这个脚本中已经给出了单个输入$ Name来生成唯一的loginname。
但是,例如,如果从$ 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')
您说您打算处理CSV文件。您应该将CSV导入变量并对其执行Foreach。
如果您想检查现有帐户,那么您可能希望Do
循环在帐户名称的末尾附加一个数字。这可能是Check-ADUser功能的一部分。
对于AD过滤器,请勿在过滤器中使用花括号。最佳做法是将它放在单引号之间。
Get-ADUser -f 'samAccountname -eq $LoginName'
来自NT / AD管理20年的另一个非代码建议:
如果您的CSV包含人员名称,请不要使用人员的实际名称作为登录ID。人们为了各种目的改变他们的名字,改变帐户名称只是因为他们结婚或其他什么是痛苦的。
如果人们有人力资源/员工编号,我强烈建议使用它。它也保证是独一无二的,并且通常比实际名称更少打字。