Как создать нового локального пользователя с помощью PowerShell
Когда вам нужно создать локального пользователя в Windows 10 или 11, вы можете использовать панель управления учетными записями пользователей. Но мы также можем использовать PowerShell для создания нового локального пользователя. Таким образом, мы можем легко автоматизировать создание локальной учетной записи на устройствах Windows.
Чтобы создать локального пользователя с помощью PowerShell, вам необходимо иметь права администратора на компьютере и запустить PowerShell от имени администратора (с повышенными правами). В противном случае вы не сможете создать учетные записи.
В этой статье я объясню, как вы можете создать нового локального пользователя. В конце статьи у меня есть два скрипта PowerShell, которые вы можете использовать для создания локального пользователя.
Создать локального пользователя с помощью PowerShell
Чтобы создать нового локального пользователя, мы будем использовать командлет New-LocalUser в PowerShell. У нас есть возможность установить пароль для аккаунта или создать аккаунт без пароля.
Существует также несколько других полезных параметров, которые мы можем использовать:
- -Name
-
Имя пользователя учетной записи — максимум 20 символов
- -Password
Пароль — предоставлен в виде защищенной строки
- -Description
Описание аккаунта
- -AccountExpires
Объект DateTime, когда истекает срок действия аккаунта
- -AccountNeverExpires
Учетная запись не истекает
- -Disabled
Создаёт учетную запись как отключенную
- -FullName
Отображаемое имя учетной записи
- -PasswordNeverExpires
Пароль не истекает
- -UserMayNotChangePassword
Пользователь не может изменить пароль
Итак, чтобы быстро создать локальную учетную запись пользователя с помощью PowerShell, мы можем сделать следующее:
$password = Read-Host -AsSecureString
New-LocalUser -Name "LazyUser" -Password $password -FullName "Lazy User" -Description "Test user"
Заметка
PowerShell 7.3.x выдает ошибку «New-LocalUser: Не удалось загрузить тип 'Microsoft.PowerShell.Telemetry.Internal.TelemetryAPI'», вы можете решить это, сначала импортировав модуль localaccounts с помощью:import-module microsoft.powershell.localaccounts -UseWindowsPowerShell
Этот небольшой скрипт PowerShell потребует от вас сначала ввести пароль, после чего будет создан пользователь с указанным паролем.
Предоставление пароля
Как вы видите, это не позволит вам запустить скрипт автономно, потому что вам нужно будет ввести пароль. Это также проблема при создании локальных пользователей, чаще всего вы хотите передать пароль безопасным способом.
Если вы запускаете скрипт удаленно или под собственным контролем, вы можете записать пароль внутри скрипта PowerShell и преобразовать его в защищенную строку. Но имейте в виду, кто бы ни открыл скрипт, тот сможет прочитать пароль!
Username and Password
$username = "LazyUser"
$password = ConvertTo-SecureString "LazyAdminPwd123!" -AsPlainText -Force # Super strong plane text password here (yes this isn't secure at all)
Creating the user
New-LocalUser -Name "$username" -Password $password -FullName "$username" -Description "Lazy Test user"Вы можете сохранить это в файл ps1 и просто запустить его в повышенной сессии PowerShell.
Установка даты истечения
По умолчанию новая учетная запись пользователя не истечет, но с помощью команды New-LocalUser мы можем установить дату истечения срока действия для учетной записи. Для даты нам понадобится использовать объект DateTime PowerShell:
$date = Get-Date -Year 2022 -Month 06 -Day 10
Creating the user
New-LocalUser -Name "$username" -Password $password -AccountExpires $date -FullName "$username" -Description "Lazy Test user"Добавление пользователя в группу с помощью команды Add-LocalGroupMember
После того как вы создали пользователя, вам нужно сделать его членом локальной группы. Без этого пользователь не сможет войти в систему. Чтобы сделать пользователя членом группы, мы будем использовать командлет Add-LocalGroupMember.
Команда Add-LocalGroupMember требует только имя группы и участника, которого вы хотите добавить:
Add-LocalGroupMember -Group Users -Member LazyUserКомандлет не выводит ничего при успешном выполнении, только ошибку, если имя группы или участник не найдены.
Вы также можете добавить нескольких пользователей в локальную группу с помощью PowerShell. Просто разделите членов запятой в команде:
Add-LocalGroupMember -Group Users -Member "LazyUser", "LazyUser2"Полный скрипт для нового локального пользователя в PowerShell
Я создал два скрипта, которые помогут вам создать локальную учетную запись пользователя с помощью PowerShell. В оба скрипта я добавил опцию записи лог-файла. Этот лог-файл хранится на сетевом ресурсе, что позволяет вам легко проверить, успешна ли была регистрация на компьютере.
В первом сценарии установлен пароль, поэтому вы можете просто запустить сценарий на компьютере. Учтите, что вам потребуется доступ администратора для создания локальной учетной записи!
<#
.SYNOPSIS
Create local admin acc
.DESCRIPTION
Creates a local administrator account on de computer. Requires RunAs permissions to run
.OUTPUTS
none
.NOTES
Version: 1.0
Author: R. Mens - LazyAdmin.nl
Creation Date: 25 march 2022
Purpose/Change: Initial script development
#>
Configuration
$username = "adminTest" # Administrator is built-in name
$password = ConvertTo-SecureString "LazyAdminPwd123!" -AsPlainText -Force # Super strong plane text password here (yes this isn't secure at all)
$logFile = "\\server\folder\log.txt"
Function Write-Log {
param(
[Parameter(Mandatory = $true)][string] $message,
[Parameter(Mandatory = $false)]
[ValidateSet("INFO","WARN","ERROR")]
[string] $level = "INFO"
)
# Create timestamp
$timestamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
# Append content to log file
Add-Content -Path $logFile -Value "$timestamp [$level] - $message"
}
Function Create-LocalAdmin {
process {
try {
New-LocalUser "$username" -Password $password -FullName "$username" -Description "local admin" -ErrorAction stop
Write-Log -message "$username local user crated"
# Add new user to administrator group
Add-LocalGroupMember -Group "Administrators" -Member "$username" -ErrorAction stop
Write-Log -message "$username added to the local administrator group"
}catch{
Write-log -message "Creating local account failed" -level "ERROR"
}
}
}
Write-Log -message "#########"
Write-Log -message "$env:COMPUTERNAME - Create local admin account"
Create-LocalAdmin
Write-Log -message "#########"В этом случае скрипт сделает пользователя членом группы Администраторов. Вы можете, конечно, изменить это на любую другую группу. Убедитесь, что вы задали имя пользователя, пароль и путь к файлу журнала в первой части скрипта.
Вы также можете загрузить полный скрипт отсюда из моего репозитория на Github.
Скрипт локальной учетной записи пользователя
Второй скрипт создает локальную учетную запись пользователя, которая является членом групп пользователя. Отличие от первого скрипта заключается в том, что этот скрипт запросит пароль.
<#
.SYNOPSIS
Create local user acc
.DESCRIPTION
Creates a local user account on de computer. Requires RunAs permissions to run
.OUTPUTS
none
.NOTES
Version: 1.0
Author: R. Mens - LazyAdmin.nl
Creation Date: 25 march 2022
Purpose/Change: Initial script development
#>
Configuration
$username = "LazyTestUser" # UserName
$fullName = "Lazy Test User" # Full name
$logFile = "\\server\folder\log.txt"
Function Write-Log {
param(
[Parameter(Mandatory = $true)][string] $message,
[Parameter(Mandatory = $false)]
[ValidateSet("INFO","WARN","ERROR")]
[string] $level = "INFO"
)
# Create timestamp
$timestamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
# Append content to log file
Add-Content -Path $logFile -Value "$timestamp [$level] - $message"
}
Function Create-LocalUser {
process {
try {
New-LocalUser "$username" -Password $password -FullName "$fullname" -Description "local user" -ErrorAction stop
Write-Log -message "$username local user created"
# Add new user to administrator group
Add-LocalGroupMember -Group "Users" -Member "$username" -ErrorAction stop
Write-Log -message "$username added to the local users group"
}catch{
Write-log -message "Creating local account failed" -level "ERROR"
}
}
}
Enter the password
Write-Host "Enter the password for the local user account" -ForegroundColor Cyan
$password = Read-Host -AsSecureString
Write-Log -message "#########"
Write-Log -message "$env:COMPUTERNAME - Create local user account"
Create-LocalUser
Write-Log -message "#########"Снова вы можете скачать полный скрипт здесь из моего репозитория на Github.
Заключение
New-LocalUser также должен иметь возможность создавать локальную учетную запись, которая связана с учетной записью Microsoft. Но имя пользователя по-прежнему ограничено 20 символами и не принимает символ @. Поэтому пока мы ограничены только локальными учетными записями.
Я надеюсь, что эта статья помогла вам создать локальную учетную запись пользователя с помощью PowerShell. Если у вас есть вопросы, просто оставьте комментарий ниже.
