Как при помощи Powershell создать локальных пользователей и добавить их в группы.
Довольно часто возникает необходимость создавать локальных пользователей на компьютерах и добавлять их в различные группы(в основном, конечно, в группу «Пользователи удаленного рабочего стола»).
Хорошо, если это один-два пользователя, тогда несложно это сделать и руками. Но если их пара десятков, процесс превращается в нудный и малоэффективный.
В этом случае нам на помощь приходит Powershell, который значительно упрощает жизнь сисадмину.
Для добавления локальных пользователей на компьютер и добавление их в группу нам понадобится список пользователей в формате .csv(с указанием необходимых данных о пользователях) и небольшой скрипт Powershell. В данном случае скрипт создает пользователя, задает имя, полное имя и описание пользователя, а также добавляет его в нужные группы. При необходимости можно изменить(дополнить) файл и скрипт под свои задачи.
Файл csv можно создать в Excel с последующим сохранением в формате csv
либо создать текстовый файл в обычном блокноте и сохранить его с расширением .csv
Вот так выглядит файл в блокноте:
Если вы добавляете пользователей на виртуальной машине, нужно скопировать файл с учетными данными пользователей и сам скрипт в виртуальную машину. Как скопировать файл в виртуальную машину VMware можно узнать здесь.
Ну а вот и сам скрипт Powershell, с помощью которого вы сможете создать пользователей и добавить их в группы быстро и просто(не забудьте запустить Powershell с правами Администратора).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Write-host -ForegroundColor DarkYellow "# Скрипт для создания локальных учетных записей пользователей #и добавления их в группы.# # Файл с пользователями должен содержать поля: # username - имя(логин) пользователя # # fullname - полное имя пользователя # # description - описание пользователя # # groups - группа(ы), в которые нужно добавить пользователя(через запятую, без кавычек) #" $Path_to_csv = Read-Host "Введите путь до файла-списка пользователей" $users = Import-Csv $Path_to_csv -Encoding Default -Delimiter ";" foreach ($user in $users) { $username = $user.username $password = $user.password | ConvertTo-SecureString -AsPlainText -Force $groups = @($user.groups) $grs = $user.groups.split(",") $description =$user.description $fullname = $user.fullname New-LocalUser -Name $username -Password $password -FullName "$fullname" -Description "$description" foreach($group in @($grs)) { Add-LocalGroupMember -Group $group -Member $username } } |
Кстати, посмотреть пользователя, запустившего определенный процесс, тоже поможет powershell.
Ну, а если вы дочитали до конца, вот вам бонус — скрипт для создания локальных пользователей с графическим интерфейсом:
Скачать
Возможно, вас заинтересует статья о том как при помощи Powershell заставить локальных юзеров сменить пароль User must change password. Снимаем и ставим галку при помощи Powershell.
Надеюсь, кому-то эта информация окажется полезной и поможет при помощи Powershell создать локальных пользователей и добавить их в нужные группы.
При создании скрипта использованы материалы с https://social.technet.microsoft.com/wiki/contents/articles/4546.working-with-passwords-secure-strings-and-credentials-in-windows-powershell.aspx
и https://social.technet.microsoft.com/Forums/ru-RU/b9fb9bca-ae42-436a-80c7-20d2b2bdb7cc/1044108610731072107410831077108510801077?forum=scrlangru
Попробывал ваш скрипт, но при попытке исполнить выходит ошибка.
Import-Csv : Не удается проверить аргумент для параметра «Path». Аргумент пустой или имеет значение NULL.
Иван, вероятнее всего, неверно указан путь к файлу csv. Проверьте правильность пути и попробуйте снова запустить скрипт.
Интересный пост
Автору респект!Скрипт ниплох, но я думаю что нужно его доработать, например добавить что бы при создании пользователя ставились галки: Срок действия пароля неограничен и Запретить смену пароля
Иван, спасибо за комментарий. Задачи установить указанные галки не было, но спасибо за идею. Постараюсь допилить, если будет время. Кстати, информацию об изменении атрибутов пользователей можно посмотреть здесь. Вы можете использовать ее в своих скриптах.
С вашими статьями ознакомился хорошая информация, скрипт ваш изменил немного спасибо вам за него, теперь галки стоят при создании,но вот мне нужно создать пользователей что бы при входе пользователя запускалась приложение со среды и некоторые параметры пользователя такие как врема сеанса или завершение отключенного сеанса, но пока не нашел как реализовать это.
не удается найти параметр соответствующий имени параметра encoding
Artem08.11.2020 в 12:16
не удается найти параметр соответствующий имени параметра encoding
Скорее всего необходимо обновить powershell до 5.1 версии…
Для тех, кто как и я не шарит в PS, но не хочет создавать юзеров в ручную:
Для того, чтобы у созданных юзеров стояли галочки: Срок действия пароля неограничен и Запретить смену пароля в скрипте необходимо добавить строку:
set-LocalUser -Name $username -UserMayChangePassword 0 -PasswordNeverExpires 1
после строки
New-LocalUser -Name $username -Password $password -FullName «$fullname» -Description «$description»
Должно получиться так:
New-LocalUser -Name $username -Password $password -FullName «$fullname» -Description «$description»
set-LocalUser -Name $username -UserMayChangePassword 0 -PasswordNeverExpires 1