Меню

Add user windows powershell

Как получить список локальных пользователей в 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 можно вывести так:

Читайте также:  Драйвера для raid контроллера windows 2012

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 on macbook parallels

Управление локальными группам 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 -session $s -hidecomputername | select * -exclude RunspaceID | out-gridview -title «LocalAdmins»

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.

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:
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.

Adblock
detector