Я пытаюсь создать сценарий создания пользователя, чтобы научить себя больше Powershell. В настоящее время я работаю только над созданием только имени пользователя и хочу убедиться, что каждое имя пользователя уникально.
После того, как пользователь введет имя и номер пользователя, скрипт должен сделать следующее.
Получить имя
Получите средний инициал
Получить фамилию
Объедините первую букву имени + средняя буква + 6 символов от фамилии
Если пользователи уже существуют, добавьте число, начинающееся с 1, пока имя пользователя не станет уникальным.
В настоящее время я застрял на шаге 5. Если имя пользователя не уникально, оно добавляет номер один. И.Е. Пользователь Brenda T Follower имеет имя пользователя BTFollow, и если это имя пользователя уже существует, оно становится BTFollow1.
Однако, если BTFollow и BTFollow1 уже существуют вместо создания BTFollow2, это делает BTFollow12.
И, наконец, хотя это и не является большой проблемой, я хочу, чтобы мои параметры отображали то, что следует за Read-Host, но в этом тексте отображается не только имя переменной.
Вот мой код.
Param(
#Gather users first name, required input and must not be empty or null
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[string]
$FirstName = (Read-Host -Prompt 'Please input the users first name.'),
#Gather users middle initial, required input and must not be empty or null and must only be one character
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[ValidateLength(1,1)]
[string]
$MiddleInitial = (Read-Host -Prompt 'Please input the users middle initial.'),
#Gather users last name, required input and must not be empty or null
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[string]
$LastName = (Read-Host -Prompt 'Please input the users last name.'),
#Gathers user phone extension, required input, mustn ot be empty or null, and must only user numbers
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[ValidatePattern("[0-9][0-9][0-9][0-9]")]
[ValidateLength(4,4)]
[String]
$PhoneExtension = (Read-Host -Prompt 'Please input the users 4 digit exension, numbers only')
)
$i = 0
#Create user name
$Username = $FirstName.Substring(0,1) + $MiddleInitial + $LastName.Substring(0,6)
#Check username does not exist, if it does add numbers
Do {
Try {
Get-ADUser $UserName | Out-Null
$UserName = $Username + ++$i
Continue
}
Catch {
Break
}
} While ($True)
Write-Host "Username is $Username"