- Как получить список локальных пользователей в Powershell и создать нового
- Получение списка локальных пользователей в Powershell Get-ADUser
- Создание локального пользователя Powershell и добавление в группу
- Удаление локальных пользователей
- Смена пароля локального администратора в Powershell
- Управление локальными пользователями и группами с помощью PowerShell
- Модуль LocalAccounts
- Управление локальными пользователями Windows с помощью PowerShell
- Управление локальными группам Windows с помощью PowerShell
- New-Local User
- Syntax
- Description
- Examples
- Example 1: Create a user account
- Example 2: Create a user account that has a password
- Parameters
- Inputs
- Outputs
- Notes
Как получить список локальных пользователей в Powershell и создать нового
02 августа 2019
Для получения списка локальных пользователей в Powershell, созданию новых, а так же для работ с группами есть множество команд. Что бы увидеть все их выполните команду:
Если нам нужно увидеть параметры, которые команды еще принимают, можно выполнить эту команду (на примере Get-LocalUser):
Навигация по посту
Получение списка локальных пользователей в Powershell Get-ADUser
Так мы получим список учетных записей:
Мы можем получить такую информацию не обо всех учетных записях, а из конкретных групп. Так я получу локальных администраторов т.к. они находятся в соответствующей группе:
Если требуется получить какие-то дополнительные параметры (свойства) объекта. Для того что бы узнать все параметры:
А что бы вывести их все сразу:
Так, например, я получу все объекты, которые активны:
А так даты последнего входа только у тех объектов, которые включены:
Создание локального пользователя Powershell и добавление в группу
Так мы создадим нового пользователя с именем «IT_Support» с паролем «Parol12!»:
Если мы не укажем ключ PasswordNeverExpires — пароль будет действовать месяц.
Затем добавим нового пользователя в группу администраторов:
Ключ Member способен принимать несколько значений, т.е. мы можем добавить множество аккаунтов. Для этого нужно написать их через запятую.
При создании нового объекта есть еще несколько ключей:
- AccountExpires — время активности учетной записи. Если не указан этот ключ, то такого срока нет. Если мы хотим указать этот срок нам нужна переменная datetime. Примеры с датой и временем в Powershell мы уже разбирали.
- AccountNeverExpires — если не указан ключ выше, то у нас работает этот ключ.
- Description — описание учетной записи по желанию.
- Disabled — по умолчанию аккаунт включен, мы можем указать обратное.
- FullName — имя и фамилия например.
- NoPassword — учетная запись создается без пароля.
- UserMayNotChangePassword — запрещает смену пароля.
Удаление локальных пользователей
Для примера так мы можем удалить объект, который создавали раннее из группы:
Если мы хотим отключить объект:
Смена пароля локального администратора в Powershell
Изменение существующих объектов делается с помощью команд с глаголом Set. На примере администратора сменим пароль:
Мы можем изменить все те же параметры, что и в случае создания учетной записи (перечислены выше). Например так мы можем отключить срок действия пароля:
Отсутствуют только те ключи, которые выведены в отдельный командлет. Например так мы можем включить объект:
Управление локальными пользователями и группами с помощью PowerShell
Относительно недавно Microsoft добавила в Windows стандартный PowerShell модуль для управления локальными пользователями и группами под названием Microsoft.PowerShell.LocalAccounts. Ранее этот командлет нужно было качать и импортировать в PowerShell отдельно. В Windows Server 2016 и Windows 10 модуль LocalAccounts теперь доступен по умолчанию, т.к. он входит в состав PowerShell 5.1. В более ранние версии Windows для использования модуля управления локальными аккаунтами нужно установить Windows Management Framework 5.1.
Модуль LocalAccounts
Всего в модуль входит 15 командлетов. Полный список командлетов в модуле LocalAccounts можно вывести так:
Get-Command -Module Microsoft.PowerShell.LocalAccounts
- Add-LocalGroupMember – добавить пользователя в локальную группу
- Disable-LocalUser – отключить локальную учетную запись
- Enable-LocalUser – включить учетную запись (разблокировать)
- Get-LocalGroup – получить информацию о локальной группе
- Get-LocalGroupMember – получить список пользователей в локальной группе
- Get-LocalUser – получить информацию о локальном пользователе
- New-LocalGroup – создать новую локальную группы
- New-LocalUser – создать пользователя
- Remove-LocalGroup – удалить группу
- Remove-LocalGroupMember – удалить члена из группы
- Remove-LocalUser – удалить локального пользователя
- Rename-LocalGroup – переименовать группу
- Rename-LocalUser – переименовать пользователя
- Set-LocalGroup – изменить группу
- Set-LocalUser – изменить пользователя
Далее рассмотрим несколько типовых задач по управлению локальными пользователями и группами на компьютере с Windows 10 при помощи PowerShell командлетов из состава модуля LocalAccounts.
Управление локальными пользователями Windows с помощью PowerShell
Выведем список имеющихся на компьютере локальных пользователей Windows:
Как вы видите, на компьютере имеется 7 локальных учетных записей, 3 из которых отключены (Enabled=False).
Чтобы вывести все свойства конкретной локальной учетной записи (аналог комадлета для получения иформации о пользователях из AD — Get-ADUser), выполните:
Get-LocalUser -Name ‘root’ | Select-Object *
AccountExpires :
Description :
Enabled : True
FullName :
PasswordChangeableDate : 4/23/2018 11:23:48 PM
PasswordExpires :
UserMayChangePassword : True
PasswordRequired : False
PasswordLastSet : 4/22/2018 11:23:48 PM
LastLogon : 7/15/2018 9:04:32 PM
Name : root
SID : S-1-5-21-3650440056-3766451173-3310994491-1001
PrincipalSource : Local
ObjectClass : User
Чтобы получить конкретный атрибут пользователя, например, время последней смены пароля, выполните:
Get-LocalUser -Name ‘root’ | Select-Object PasswordLastSet
Создадим нового локального пользователя с помощью командлета New-LocalUser. Данный командлет позволяет создать следующие типы учетных записей:
- Локальные учетных записи Windows
- Учетные записи Microsoft
- Учетные записи Azure AD
При создании учётной записи пользователя с помощью New-LocalUser нельзя указывать ее пароль в качестве аргумента Password в открытом виде. Предварительно пароль нужно сконвертировать в безопасную строку, запросив пароль интерактивно:
$UserPassword = Read-Host –AsSecureString
Или указав пароль непосредственно в консоли PoSh:
$UserPassword = ConvertTo-SecureString «Pa$$word!!» -AsPlainText -Force
New-LocalUser «SIvanov» -Password $UserPassword -FullName «Sergey Ivanov» -Description «Local Account dlya udalennogo vhoda»
Чтобы изменить пароль пользователя, воспользуйтесь командой Set-LocalUser (предполагаем, что вы уже преобразовали новый пароль в SecureString):
Set-LocalUser -Name sivanov -Password $UserPassword –Verbose
Чтобы установить флаг «Срок действия пароля пользователя не истекает» («Password never expired»), выполните:
Set-LocalUser -Name sivanov –PasswordNeverExpires $True
Как видите, вам не нужно преобразовывать значение UserAccountControl, как при управлении свойствами учётной записи в AD.
Как вы помните, вы можете авторизоваться в Windows 10 под учетными записями Microsoft. Если нужно создать нового пользователя, связанного с аккаунтом Microsoft, выполните следующую команду (обратите внимание, что пароль аккаунта указывать не нужно, т.к. он хранится в Microsoft).
New-LocalUser -Name «MicrosoftAccount\SomeAccount@outlook.com» -Description «Это учетка в Microsoft»
Для создания локальной учётной записи, которая связана с вашим аккаунтом в Azure AD (например, вы пользуетесь Office 365), выполните команду:
New-LocalUser -Name «AzureAD\Itpro@winitpro.ru» -Description «Это учетка в Azure AD»
Чтобы удалить этого локального пользователя, выполните:
Remove-LocalUser -Name sivanov -Verbose
Управление локальными группам Windows с помощью PowerShell
Теперь выведем список локальных групп на компьютере:
Создадим новую группу:
New-LocalGroup -Name ‘RemoteSupport’ -Description ‘Remote Support Group’
Теперь добавим в новую группу несколько локальных учетных записей и группу локальных администраторов:
Add-LocalGroupMember -Group ‘RemoteSupport’ -Member (‘SIvanov’,’root’, ‘Администраторы’) –Verbose
Если ваш компьютер входит в домен, то вы можете добавить в локальную группы и доменные аккаунты или группы. Для этого их нужно указывать в формате DomainName\user2 или DomainName\’domain admins’.
Также вы можете добавить пользователя в группы с помощью следующего конвейера (добавим пользователя в локальные администраторы):
Get-Localuser -Name ‘sivanov’ | Add-LocalGroupMember -Group ‘Administrators’
Выведем список пользователей в локальной группе:
Get-LocalGroupMember -Group ‘RemoteSupport’
Как вы видите, мы используем только локальные учетные записи (PrincipalSource – Local). Однако здесь могут быть доменные аккаунты (domain), учетные записи Microsoft (MicrosoftAccount) и аккаунты из Azure (AzureAD).
Чтобы вывести список групп, в которых состоит конкретный пользователь, придется перебрать все локальные группы на компьютере:
foreach ($LocalGroup in Get-LocalGroup)
<
if (Get-LocalGroupMember $LocalGroup -Member ‘sivanov’ –ErrorAction SilentlyContinue)
<
$LocalGroup.Name
>
>
Чтобы убрать пользователя из группы, выполните:
Remove-LocalGroupMember -Group ‘RemoteSupport’ –Member ‘sivanov’
Для управления локальными пользователями на удаленном компьютере нужно сначала подключится к нему через WinRM командлетами Invoke-Command или Enter-PSSession.
Например, нам нужно собрать список учетных записей в локальной группе на удаленных компьютерах:
$s = new-pssession -computer pc01,pc02,pc03
invoke-command -scriptblock
New-Local User
Creates a local user account.
Syntax
Description
The New-LocalUser cmdlet creates a local user account. This cmdlet creates a local user account or a local user account that is connected to a Microsoft account.
The Microsoft.PowerShell.LocalAccounts module is not available in 32-bit PowerShell on a 64-bit system.
Examples
Example 1: Create a user account
This command creates a local user account and does not specify the AccountExpires or Password parameters. Therefore, the account doesn’t expire or have a password by default.
Example 2: Create a user account that has a password
The first command prompts you for a password by using the Read-Host cmdlet. The command stores the password as a secure string in the $Password variable.
The second command creates a local user account by using the password stored in $Password . The command specifies a user name, full name, and description for the user account.
Parameters
Specifies when the user account expires. To obtain a DateTime object, use the Get-Date cmdlet. If you do not specify this parameter, the account does not expire.
Type: | DateTime |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Indicates that the account does not expire.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Prompts you for confirmation before running the cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a comment for the user account. The maximum length is 48 characters.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Indicates that this cmdlet creates the user account as disabled.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the full name for the user account. The full name differs from the user name of the user account.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the user name for the user account.
If you create a local user account for the local system, the user name can contain up to 20 uppercase characters or lowercase characters. A user name cannot contain the following characters:
A user name cannot consist only of periods . or spaces.
Type: | String |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Indicates that the user account does not have a password.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies a password for the user account. You can use Read-Host -GetCredential , Get-Credential , or ConvertTo-SecureString to create a SecureString object for the password.
If you omit the Password and NoPassword parameters, New-LocalUser prompts you for the new user’s password.
Type: | SecureString |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Indicates whether the password expires.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Indicates that the user cannot change the password on the user account.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
System.String, System.DateTime, System.Boolean, System.Security.SecureString
You can pipe a string, a DateTime object, a boolean value, or a secure string to this cmdlet.
Outputs
System.Management.Automation.SecurityAccountsManager.LocalUser
This cmdlet returns a LocalUser object. This object provides information about the user account.
Notes
- A user name cannot be identical to any other user name or group name on the computer. A user name cannot consist only of periods . or spaces. A user name can contain up to 20 uppercase characters or lowercase characters. A user name cannot contain the following characters:
A password can contain up to 127 characters.
The PrincipalSource property is a property on LocalUser, LocalGroup, and LocalPrincipal objects that describes the source of the object. The possible sources are as follows:
- Local
- Active Directory
- Azure Active Directory group
- Microsoft Account
PrincipalSource is supported only by Windows 10, Windows Server 2016, and later versions of the Windows operating system. For earlier versions, the property is blank.