从输入列表生成多个输出

问题描述 投票:0回答:1

请找到以下示例脚本。在这个脚本中已经给出了单个输入$ 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') 
powershell automation active-directory powershell-v2.0 powershell-v3.0
1个回答
0
投票

您说您打算处理CSV文件。您应该将CSV导入变量并对其执行Foreach。

如果您想检查现有帐户,那么您可能希望Do循环在帐户名称的末尾附加一个数字。这可能是Check-ADUser功能的一部分。

对于AD过滤器,请勿在过滤器中使用花括号。最佳做法是将它放在单引号之间。

Get-ADUser -f 'samAccountname -eq $LoginName'

来自NT / AD管理20年的另一个非代码建议:

如果您的CSV包含人员名称,请不要使用人员的实际名称作为登录ID。人们为了各种目的改变他们的名字,改变帐户名称只是因为他们结婚或其他什么是痛苦的。

如果人们有人力资源/员工编号,我强烈建议使用它。它也保证是独一无二的,并且通常比实际名称更少打字。

© www.soinside.com 2019 - 2024. All rights reserved.