Добавление следующей буквы к имени пользователя, если найдено имя samaccountname - PullRequest
0 голосов
/ 27 мая 2019

Я автоматизирую процесс создания новой учетной записи пользователя от Cherwell до AD, я застрял с дубликатом samaccountname. Я успешно получил аккаунты для создания, если имя samaccountname еще не существует. У меня есть проверка, которая на данный момент просто записывает вывод, чтобы сказать, найдено имя или нет.
Тинкер Белл - мой тестовый пользователь, поскольку она - любимый персонаж моих дочерей.

$FirstName = “tinker”
$SurName = “bell”
for ($i = 1; $i -le $SurName.Length; ++$i) {

$Account = $null;
$Identity = $FirstName + $SurName.Substring(0,$i)
$Account = Get-ADUser -Filter {sAMAccountName -eq $Identity}
if ($Account -eq $null) {"User does not exist in AD"}
Else {"User found in AD"} 
write-Output $Identity 
}

У меня есть это на месте, которое делает то, что должно, я просто не уверен, как остановить это, когда создается следующее имя samaccountname.

Это то, что я получаю в качестве вывода

User found in AD
tinkerb
User does not exist in AD
tinkerbe
User does not exist in AD
tinkerbel
User does not exist in AD
tinkerbell

Таким образом, он правильно выполняет первую часть, находит учетную запись и затем переходит к следующей, но затем она просто зацикливается, и я не уверен, как ее выпустить, чтобы в этом примере была создана переменная с именем $ newSam. 'tinkerbe' определяется.

S.

1 Ответ

1 голос
/ 27 мая 2019

Превратите ваш код в простую функцию, которая возвращает первое доступное имя пользователя:

function New-Username
{
  param(
    [string]$FirstName,
    [string]$SurName
  )

  for ($i = 1; $i -le $SurName.Length; ++$i) {

    $Account = $null;
    $Identity = $FirstName + $SurName.Substring(0,$i)
    $Account = Get-ADUser -Filter {sAMAccountName -eq $Identity}
    if ($Account -eq $null) {
        return $Identity
    }
    else {
        Write-Warning "User found in AD: $Identity"
    }
  }

  throw "Unable to generate distinct username"
}

и использует его как:

$NewUsername = New-Username -FirstName tinker -SurName bell
New-ADUser -SAMAccountName $NewUserName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...