Рейтинг:0

PowerShell добавить пользователей, если они есть, добавить номер

флаг kz

Я создаю пользователей активного каталога из файла usersFile2.csv Пользователи добавляются. Добавляется правильная информация об учетной записи, например, имя, фамилия и т. д.

Эта проблема. Если пользователь с таким же sAMAccountName существует, я хочу, чтобы скрипт добавил номер к sAMAccountName.. Часть Get-ADuser - это то место, где мне нужно отредактировать...

# Импорт модуля активного каталога
Активный каталог модуля импорта

#Загрузить данные из файла .csv в переменную $ADUsers.
$ADUsers = Import-csv C:\Users\Administrator\Downloads\Script5\usersFile2.csv

# Просмотрите каждую строку с пользовательскими данными в только что импортированном CSV.
foreach ($User в $ADUsers)
{
    $Username = $User.sAMAccountName
    $Пароль = $Пользователь.пароль
    $Имя = $User.givenName
    $Фамилия = $User.sn

    #Чтобы узнать, существует ли пользователь уже в AD.
    если (Get-ADUser -F {SamAccountName -eq $Username})
    {
         #Расскажи, что случилось.
         Запись-вывод «$Username уже существует».
    }
    еще
    {
        #Если пользователь не существует, то создайте учетную запись с атрибутами.
        Новый ADUser `
            -SamAccountName $Имя пользователя `
            -UserPrincipalName "[email protected]" `
            -Name "$Имя $Фамилия" `
            -GivenName $Имя `
            -Фамилия $Lastname `
            -Включено $True `
            -DisplayName "$Имя $Фамилия" `
            -EmailAddress "[email protected]" `
            -Описание $user.Description `
            -Отдел $user.Отдел `
            -Офис $user.Office `
            -AccountPassword (преобразовать в защищенную строку $Password -AsPlainText -Force) `
            -Path 'OU=dd1, OU=My_users, DC=внутренний, DC=sonic, DC=com' `
            -PasswordNeverExpires $ True
            

        #Расскажи, что случилось.
        Запись-вывод "$Username был новым и был создан"
    }
}

Два пользователя из файла usersFile2.csv добавляются, и все работает. но если есть пользователь с таким же sAMAccountName, я хочу, чтобы скрипт добавил номер...

заданноеИмя,SN,отображаемоеИмя,UserPrincipalName,mail,sAMAccountName,Офис,Отдел,Описание,пароль,Путь
Хольгер, Свенссон, Хольгер Свенссон, [email protected], [email protected], hosv, руководители, руководители, финансовый директор, Syp9393, 'OU=dd1, OU=My_users, DC=internal, DC=sonic, DC= ком'
Мари,Бергквист,Мари Бергквист,[email protected],[email protected],mabe,Executives,Executives,Head of RND,Syp9393, 'OU=dd1, OU=My_users, DC=internal, DC=sonic, DC= ком'

Мне очень нужна помощь .. Я пытался в течение нескольких часов .. Я не тот, кто сдается ... но, чувак .. Есть идеи?

yagmoth555 avatar
флаг cn
Почему в вашем выводе два пользователя получили одно и то же имя samaccountname? Я спрашиваю, поскольку оба имени пользователя действительно разные, я не понимаю, что вы там сделали. Для меня это проблема там, так как кто-то наверняка пытался переименовать учетную запись или сделал что-то не так. Это скорее исключение, которое вы должны попытаться исправить
флаг br
[1] используйте `Get-ADUser`, чтобы захватить всех пользователей с одним и тем же _basic_ именем пользователя. `SmithJ` является основой для `SmithJ` и `SMithJ1`, поэтому вы можете взять любое совпадение для `smithj`. ///// [2] если вы вернете больше нуля, отсортируйте по последним цифрам. ///// [3] взять самую старшую цифру и увеличить ее. ///// [4] используйте это для вашего нового имени пользователя - ex = найдено, что самым высоким является `SmithJ2`, поэтому используйте `SmithJ3`.
флаг kz
yagmoth555 Я записываю всю информацию об учетной записи пользователя в этот файл usersFile2.csv..Если я напишу одно и то же имя sAMAccountName, сценарий уведомит меня, но я хочу, чтобы он автоматически добавлял номер, чтобы различать... Сценарий не создает случайные имена sAMAccountName, мне нужно их ввести. Проблема, о которой вы говорите, два пользователя с таким же создаваемым именем samaccountname не существует. но спасибо! :)
Рейтинг:0
флаг us

Использовать пока-loop для обновления и проверки имени пользователя, пока не найдете действительное:

foreach ($User в $ADUsers)
{
    $Username = $User.sAMAccountName
    $Пароль = $Пользователь.пароль
    $Имя = $User.givenName
    $Фамилия = $User.sn

    $usernameCounter = 0

    в то время как (Get-ADUser -F {SamAccountName -eq $Username} -EA 0)
    {
        # увеличить значение числового суффикса
        $usernameCounter++
        # обновить имя пользователя-кандидата
        $Username = $User.sAMAccountName + $usernameCounter
    }

    Новый пользователь AD...
}
флаг kz
Да! Спасибо. Это кажется правильным .. Я попробую это утром .. Я вернусь
флаг kz
В разделе New-ADUser я записываю информацию о новом ADuser и получаю следующее сообщение об ошибке: `New-ADUser: была предпринята попытка добавить объект в каталог с именем, которое уже используется. В C:\Users\Administrator\Downloads\Script6\script6.ps1:25 char:7 + Новый-ADUser + ~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (CN=Holger Svens...C=sonic, DC=com:String) [New-ADUser], ADException + FullyQualifiedErrorId: ActiveDirectoryServer:8305,Microsoft.ActiveDirectory.Management.Commands.NewADUser` Я предполагаю, что $usernameCounter не был добавлен...
флаг kz
Он создает пользователей с правильной информацией об учетной записи, но после создания новые не создаются ... также спасибо за попытку помочь ...

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.