Для управления локальными пользователями и группами в Windows можно использовать встроенный PowerShell модуль Microsoft. PowerShell. LocalAccounts
. С помощью этого модуля вы можете создать или удалить локального пользователя, создать новую группу безопасности и добавить в нее пользователей. Этот модуль доступен во всех версиях Windows, начиная с Windows Server 2016 и Windows 10. В предыдущих версиях Windows этот модуль устанавливается вместе с Windows Management Framework 5.1 при обновлении версии PowerShell
.
Полный список командлетов PowerShell в модуле 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 при помощи PowerShell командлетов из модуля LocalAccounts.
Создать нового локального пользователя с помощью PowerShell
Чтобы быстро создать нового пользователя, выполните команду:
Укажите пароль для нового пользователя:

Чтобы сразу добавить пользователя в группу локальных администраторов, выполните команду:
При создании пользователя можно дополнительно использовать следующие параметры:
-
-AccountExpires– дату действия учетной записи, при наступлении которого учетная запись будет автоматически отключена (по умолчанию командлет New-LocalUser создает бессрочную учетную запись)
-
-AccountNeverExpires -
-Disabled– отключить учетную запись после создания
-
-PasswordNeverExpires– неограниченный срок действия пароля
-
-UserMayNotChangePassword– запретить пользователю менять свой пароль
Управление локальными пользователями Windows из PowerShell
Чтобы вывести список всех локальных пользователей Windows на текущем компьютере, выполните:

Как вы видите, на компьютере имеется 7 локальных учетных записей, 4 из которых отключены (Enabled=False) (в том числе встроенный администратор Windows
).
AccountExpires :
Description :
Enabled : True FullName :
PasswordChangeableDate : 7/20/2022 12:17:04 PM
PasswordExpires :
UserMayChangePassword : True
PasswordRequired : False
PasswordLastSet : 7/20/2022 12:17:04 PM
LastLogon : 5/15/2023 2:01:48 AM
Name : root SID
: S-1-5-21-1823742600-3125382138-2640950260-1001
PrincipalSource : Local
ObjectClass : User Обратите внимание на атрибут PrincipalSource. В нем указан тип аккаунта. Это может быть:
- Локальный пользователь Windows (PrincipalSource: Local)
- Учетные записи Microsoft (PrincipalSource: Microsoft Account)
- Учетные записи Azure AD (PrincipalSource: AzureAD)
Чтобы получить значение конкретного атрибута пользователя, например, время последней смены пароля, выполните:

Чтобы изменить пароль существующего пользователя, выполните команду:
Чтобы установить флаг «Срок действия пароля пользователя не истекает» («Password never expired»), выполните:
Отключить учетную запись:
Чтобы удалить локального пользователя, выполните:
Используем PowerShell для управления локальными группам
Теперь выведем список локальных групп на компьютере:

Создадим новую группу:
New-LocalGroup -Name 'RemoteSupport' -Description 'Remote Support Group'
Теперь добавим в новую группу несколько локальных пользователей и группу локальных администраторов:
Также вы можете добавить пользователя в группы с помощью следующего конвейера (в этом примере мы добавим пользователя в локальную группу, разрешающую ему удаленный доступ к рабочему столу через RDP
):
Выведем список пользователей в локальной группе:
Get-LocalGroupMember -Group 'RemoteSupport'
В локальную группу могут быть добавлены не только локальные учетные записи (PrincipalSource – Local), но и доменные аккаунты (domain), учетные записи Microsoft (MicrosoftAccount) и аккаунты из Azure (AzureAD).

Чтобы добавить в локальную группу пользователя из Microsoft или AzureAD, используется такой синтаксис:
Чтобы вывести список локальных групп, в которых состоит конкретный пользователь, выполните следующий скрипт:
Чтобы удалить пользователя из группы, выполните:
Для управления локальными пользователями на удаленном компьютере нужно сначала подключится к нему через WinRM командлетами Invoke-Command
или Enter-PSSession
.
Например, нам нужно собрать список учетных записей в локальной группе на удаленных компьютерах:
Конфиденциальность и безопасность имеют первостепенное значение для любой организации или даже пользователя в целом. Если вы являетесь частью организации, предоставление неавторизованным пользователям доступа к компьютеру может стать помехой для данных организации. Вот почему в этом посте мы увидим, как составить список всех пользователей на компьютере с Windows различными способами.
Получить список всех пользователей просто. Мы упомянули три метода сделать то же самое, и вы можете следовать любому из них, чтобы выполнить задачу.
- Просмотр всех пользователей через настройки Windows
- Просмотр всех пользователей через Управление компьютером
- Просмотр всех пользователей через PowerShell
Поговорим о них подробно.
Давайте начнем с самого очевидного места, где можно возиться со своим компьютером, с настроек Windows. Мы также можем просмотреть всех пользователей, подключенных к вашему компьютеру, из настроек. Чтобы сделать то же самое, выполните шаги, указанные ниже.
- Запуск Параметры Windows
по Вин+И. - Перейти к Счета
вкладка - Нажмите на Другие пользователи.
Здесь вы можете увидеть всех пользователей, подключенных к системе. - Вы также можете проверить учетные записи членов вашей семьи, для этого вернитесь и нажмите «Семья».
Это сделает работу за вас. Однако проблема с этим методом заключается в том, что он не позволяет зрителю увидеть учетную запись администратора, а также отключенную учетную запись. Он проверяет текущие учетные записи и подходит для домашних пользователей.
Читать: Как найти всех зарегистрированных пользователей в Windows
Управление компьютером — это инструмент в редакции Windows Pro, работа которого соответствует его названию. Мы можем управлять пользователями или просматривать их с помощью этого самого инструмента. Однако пользователям Windows Home следует пропустить этот метод, поскольку в их системе отсутствует Управление компьютером. Выполните следующие действия, чтобы проверить всех пользователей с помощью управления компьютером.
- Прежде всего, откройте “Компьютерное управление”
выполнив поиск в меню «Пуск». - Теперь перейдите в «Системные инструменты»> «Локальные пользователи и группы»> «Пользователи».
- Теперь вы можете видеть всех пользователей, подключенных к системе.
Если вы хотите изменить макет, просто нажмите на Вид > Крупные значки.
Читайте: Настройки учетных записей пользователей в Windows 11
Если вам нравится использовать командную строку, все, что вам нужно сделать, это открыть PowerShell
с правами администратора и выполните следующую команду.
Это позволяет вам видеть все учетные записи, установленные на вашем компьютере, вместе с их описанием.
Мы надеемся, что вы сможете проверить все учетные записи, подключенные к вашему компьютеру, любым из упомянутых способов.
Утилиты PSLoggedOn и Qwinsta
В комплекте утилит SysInternals PSTools от Microsoft есть консольная утилита PSLoggedOn.exe
, которую можно использовать для получения имени пользователя, который вошел на удаленный компьютер, а также список подключенных к нему SMB сеансов.

Если нужно получить только имя пользователя, вошедшего локально, используйте опцию –l:
Psloggedon.exe \\wks215s1 –l
Утилита Psloggedon подключается к реестру и проверяет в нем имя пользователя, вошедшего локально. Для этого должна быть включена служба RemoteRegistry
. Вы можете запустить ее и настроить автозапуск службы с помощью PowerShell
:
Set-Service RemoteRegistry –startuptype automatic –passthru
Start-Service RemoteRegistry
Также можно получить список сессий на удаленном компьютере с помощью встроенной утилиты
qwinsta
. Эта утилита должна быть знакома любому администратору, управляющему терминальными серверами с Remote Desktop Services. Чтобы получить список сессий с удаленного компьютера, выполнит команду:

Утилита возвращает список всех сессий (активных и отключенных по таймауту
) на RDS сервере или десктопной редакции Windows 10 (даже если вы разрешили к ней множественные RDP подключения
).
Если при подключении к удаленному серверу через qwinsta вы получаете ошибку Error 5 Access Denied, проверьте что на удаленном компьютере разрешено удаленное управление пользователями через RPC. Включите, если нужно через реестр следующей командой или через GPO
:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v "AllowRemoteRPC" /t "REG_DWORD" /d "1" /f
Получаем имя пользователя на удаленном компьютере через PowerShell
Команда вернула имя пользователя, который выполнил вход на компьютер.

У командлета Get-WmiObject есть параметр –ComputerName, который можно использовать для получения доступа к WMI объектам на удаленном компьютере. Следующая команда вернет имя пользователя с удаленного компьютера:

Данная команда показывает только пользователя, вошедшего на консоль (не через RDP).
Также для получения информации с удаленных компьютеров можно использовать PSRemoting с помощью командлета Invoke-Command
.
Если нужно получить только имя пользователя на компьютере (без домена), воспользуетесь следующими командами:

В современных версиях
PowerShell Core (pwsh.exe) вместо Get-WmiObject нужно использовать CIM командлет Get-CimInstance:

GetCiminstance использует WinRM для подключения к удаленным компьютерам, поэтому на них нужно включить и настроить WinRM через GPO
или командой:
PowerShell скрипт для проверки пользователей на удаленных компьютерах
Если вам нужно собрать информацию о пользователях сразу с нескольких компьютерах, можете использовать следующую PowerShell функцию получить имена пользователей.
function Get-LoggedUser
{ [CmdletBinding()] param ( [string[]]$ComputerName ) foreach ($comp in $ComputerName) { $output = @{'Computer' = $comp } $output. UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp). UserName [PSCustomObject]$output }
} 
Можно получить имена пользователей, которые работают на компьютерах в домене Active Directory. Для получения списка компьютеров нужно использовать командлет Get-ADComputer.
В следующем примере мы получим имена пользователей, которые работают за активными
компьютерами в определенном OU домена. Чтобы скрипт работал быстрее перед тем, как обратится к обратится к удаленному компьютеру, я добавил проверку его доступности по сети через ICMP пинг с помощью командлета Test-NetConnection
:
function Get-LoggedUser
{ [CmdletBinding()] param ( [string[]]$ComputerName ) foreach ($comp in $ComputerName) { if ((Test-NetConnection $comp -WarningAction SilentlyContinue). PingSucceeded -eq $true) { $output = @{'Computer' = $comp } $output. UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp). UserName } else { $output = @{'Computer' = $comp } $output. UserName = "offline" } [PSCustomObject]$output }
}
$computers = (Get-AdComputer -Filter {enabled -eq "true"} -SearchBase 'OU=Kazan,DC=winitpro,DC=loc'). Name
Get-LoggedUser $computers |ft -AutoSize 
Также обратите внимание, что вы можете хранить в свойствах компьютеров в AD имя пользователя, который выполнил вход. Для этого можно использовать логон скрипт, описанный в статье “ Set-ADComputer
: добавляем информацию о пользователе в свойства компьютеров AD
”
Поиск активных сессий и залогиненных пользователей с Powershell
https://t.me/sysadminof 
Получение имени залогиненного пользователя
Get-WmiObject -Class Win32_ComputerSystem | Select-Object UserName
Есть еще вариант использовать CIM, который может работать немного быстрее:
Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object UserName

Обе команды могут работать удаленно если добавить атрибут ComputerName:
Get-WmiObject -ComputerName 'localhost' -Class Win32_ComputerSystem | Select-Object UserName

Если вы планируете выполнять эти команды удаленно, то может понадобится выполнить предварительные настройки в виде открытия портов и необходимых правах.
Получить только имя пользователя можно так:
$userinfo = Get-WmiObject -ComputerName 'localhost' -Class Win32_ComputerSystem $user = $userinfo. UserName -split '\\' $user[1]

Get-CimInstance -ComputerName 'localhost' -Class win32_LoggedOnUser | ft

Получение списка компьютеров
Если у вас нет списка компьютеров к которым вы планируете подключиться и узнать активного пользователя – это можно сделать через AD. На примере ниже будут возвращены все компьютеры:
Get-ADComputer -Filter *

Операция по получению списка компьютеров может быть очень долгой, если у вас большой парк ПК в AD. Вы можете вернуть только компьютеры, которые не отключены в AD (Disable) следующим способом:
Get-ADComputer -Filter * | where Enabled -eq $True

Можно использовать и фильтрацию. Так я верну компьютеры имена которые начинаются на “CL”:
Get-ADComputer -Filter {Name -like 'CL*'} | where Enabled -eq $True 
Получить список имен мы можем так:
$pc = Get-ADComputer -Filter {Name -like 'CL*'} | where Enabled -eq $True
$pc. Name 
Если у вас список компьютеров не относится к AD или имеет другой формат – то просто преобразуйте его в массив:
# Текст с именами компьютеров $pc = 'Computer1,Computer2,Computer3' # Преобразование в массив $pc_array = $pc -split ',' $pc_array

Удаленное получение залогиненных пользователей
Выше уже рассматривался вариант получения имени пользователя удаленно используя WMI и CIM. Если обе команды, то всех пользователей активных в данный момент мы можем получить так:
# Текст с именами компьютеров
$computers = (Get-AdComputer -Filter *). Name
# Удаленное получение пользователей
foreach ($computer in $computers){ Get-CimInstance -ComputerName $computer -ClassName Win32_ComputerSystem | Select-Object UserName
} Такой подход может привести к ошибкам так как мы не проверяем включены ли компьютеры:

# Текст с именами компьютеров
$computers = (Get-AdComputer -Filter *). Name
# Удаленное получение имен учетных записей
foreach ($computer in $computers){ $result = Get-CimInstance -ComputerName $computer -ClassName Win32_ComputerSystem -ErrorAction SilentlyContinue $computer_login = $result. UserName -split '\\' if ($computer_login){ Write-Host 'ComputerName: ' $computer_login[0] Write-Host 'UserName: ' $computer_login[1] }
} 
Если вы не хотите выполнять команды удаленно через WMI, то вы можете использовать PSRemoting. Команда, которая использует PSRemoting, будет выглядеть примерно так же:
# Текст с именами компьютеров
$computers = (Get-AdComputer -Filter *). Name
# Удаленное получение имен учетных записей
foreach ($computer in $computers){ $result = Invoke-Command -ComputerName $computer ` -ScriptBlock { Get-WMIObject -ClassName Win32_ComputerSystem ` -ErrorAction SilentlyContinue } ` -ErrorAction SilentlyContinue $computer_login = $result. UserName -split '\\' if ($computer_login){ Write-Host 'ComputerName: ' $computer_login[0] Write-Host 'UserName: ' $computer_login[1] }
} 
Получение включенных пользователей AD
Если вам нужно вернуть учетные записи, которые включены в AD выполните следующую команду:
Get-AdUser -Filter * | where 'Enabled' -eq $True

Для возврата только отключенных учетных записей используйте $False.
Такой подход работает и с объектами компьютеров в AD:
Get-AdComputer -Filter * | where 'Enabled' -eq $False
Whoami или WMI
Вы можете вспомнить команду, которая так же возвращает имя пользователя:
whoami

Как можно увидеть она вернет ту же информацию, что и класс WMI. Ситуация меняется, когда эти команды используются удаленно:
# Пользователь вошедший в Windows и открывший Powershell
whoami
# Пользователь, который будет удаленно подключатся через Powershell
$new_psuser = Get-Credential 'admin'
# Способ с whoami
Invoke-Command -ComputerName 'localhost' ` -Credential $new_psuser ` -ScriptBlock {whoami}
# Способ с WMI
Invoke-Command -ComputerName 'localhost' ` -Credential $new_psuser ` -ScriptBlock {(Get-WmiObject -Class Win32_ComputerSystem). UserName} 
Как видно, в случае с whoami у нас вернулось имя учетной записи выполнившей команду Powershell, а с WMI пользователь Windows.
Как скрыть имя последнего пользователя на экране приветствия Windows?
Конечным пользователям удобно, когда на экране входа в Windows отображается имя учетной записи и его не нужно набирать вручную. Но это облегчает задачу злоумышленнику, получившему доступ к компьютеру. Для входа в систему ему нужно только подобрать правильный пароль. Для этого есть различные способы социальной инженерии, брутфорса или банального приклеенного листочка с паролем на мониторе.



Другие возможные значения этого параметра:
- 1
— показывать отображаемое имя, домен и имя пользователя; - 2
— показывать только отображаемое имя; - 3
— не отображать сведения о пользователе.
Теперь на экране входа в компьютер и на экране блокировки Windows отображаются пустые поля для ввода имени пользователя и пароля.

Показать список всех локальных пользователей на экране входа в Windows
По умолчанию современные версии Windows (проверено на Windows 11 21H2 и Windows 10 21H1) всегда показывают список включенных локальных пользователей в левом нижнем углу. Не отображаются только скрытые (см. ниже) или отключенные пользователи.
Чтобы авторизоваться на компьютере, пользователю достаточно лишь щелкнуть по нужной учетной записи и указать ее пароль. Это работает только на компьютерах, не включенных в домен Active Directory.
Если для учетной записи пользователя не задан пароль, то будет выполнен автоматический вход систему, даже если не настроен автологон
.

Если список локальных пользователей не отображается на экране входа компьютере, проверьте настройки следующих локальных политик (в редакторе локальной GPO
gpedit.msc
должны быть заданы следующие политики).
- Interactive Logon: Do not display last signed-in
=
Disabled(Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options)
- • Enumerate local users on domain-joined computers
(Перечислить локальных пользователей на компьютерах, подключенных к домену) =
Enabled(Computer Configuration -> Administrative Templates -> System -> Logon /Конфигурация компьютера -> Административные шаблоны -> Вход в систему) – политика позволяет вывести список локальных пользователей на доменных компьютерах
- Do not enumerate connected users on domain-joined computer
=
Disabled/Not Configured(в этом же разделе GPO)

Перезагрузите компьютер, чтобы применить новые настройки групповых политик
.
В некоторых старых билдах Windows 10 (от 1609 до 1903), была другая проблема с отображением всех локальных пользователей на экране приветствия Windows.
Чтобы исправить эту проблему, нужно было создать задание планировщика, который при каждом входе менял значение параметра на 0.
Новое задание планировщика можно создать с помощью PowerShell
.

Убедитесь, что новое задание появилось в планировщике Windows (
taskschd.msc
).

Перезайдите под пользователем. Задание должно автоматически запуститься и изменить значение параметра реестра Enabled на 1
. С помощью Get-ItemProperty
проверьте текущее значение параметра. Как вы видите, оно равно единице:

Вывести список доменных пользователей на экране входа в Windows
Если одним компьютером пользуется несколько пользователей, вы можете отобразить на экране приветствия список пользователей с активными сессиями. Активная сессия подразумевает, что пользователи выполнили вход на компьютер. Это может быть общий компьютера (работает в режиме переключения пользователей), кассы, киоски, Windows Server RDS хосты или его аналоги на десктопных версия Windows 11 и 10
).
Проверьте, что в разделе GPO Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options отключены политики:
- Interactive logon: Don’t display last signed-in: Disabled
- Interactive logon: Don’t display username at sign in: Disabled
- Block user from showing account details on sign-in: Disabled
- Do not enumerate connected users on domain-joined computer: Disabled

После этого на экране приветствия будет отображаться список пользователей, которые выполнили вход в систему. Здесь будут отображаться как активные сессии, так и сессии пользователей со статусом disconnected (например по RDP таймауту
). Пользователю достаточно один раз выполнить вход, а после этого просто выбрать учетную запись из списка и ввести пароль.

Обратите внимание, что на доменных компьютерах настройками групповых политик могут управлять администраторы домена. Если к компьютеру не применяется один из параметров локальной GPO, проверьте, возможно она переопределена доменными GPO. Для получения результирующих настроек групповых политик используйте
rsop.msc
или gpresult
.
Как скрыть пользователя на экране приветствия Windows?
На экране входа в Windows всегда отображаются пользователи, которые входят в одну из следующих локальных групп: Администраторы, Пользователи, Опытные пользователи, Гости.
Отключенные пользователи не отображаются на экране приветствия.
Список локальных пользователей можно вывести в PowerShell
или cmd:


Если нужно опять показать пользователя на экране входа, нужно удалить это параметр реестра или изменить его значение на 1.
Если на компьютере включен аккаунт встроенного администратора Windows
, и это не единственный аккаунт с правами локального администратора на компьютере
(!!!)
, вы можете скрыть его:
- Enumerate
local
users
on
domain
—
joined
computers
=
Disabled(Computer Configuration -> Administrative Templates -> System -> Logon /Конфигурация компьютера -> Административные шаблоны -> Вход в систему) – политика позволяет вывести список локальных пользователей на доменных компьютерах
- Do not enumerate connected users on domain-joined computer
=
Enabled
Поиск активных сессий и залогиненных пользователей с Powershell
https://t.me/i_odmin Получение имени залогиненного пользователя
Get-WmiObject -Class Win32_ComputerSystem | Select-Object UserName
Есть еще вариант использовать CIM, который может работать немного быстрее:
Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object UserName

Обе команды могут работать удаленно если добавить атрибут ComputerName:
Get-WmiObject -ComputerName 'localhost' -Class Win32_ComputerSystem | Select-Object UserName

Если вы планируете выполнять эти команды удаленно, то может понадобится выполнить предварительные настройки в виде открытия портов и необходимых правах.
Получить только имя пользователя можно так:
$userinfo = Get-WmiObject -ComputerName 'localhost' -Class Win32_ComputerSystem $user = $userinfo. UserName -split '\\' $user[1]

Get-CimInstance -ComputerName 'localhost' -Class win32_LoggedOnUser | ft

Получение списка компьютеров
Если у вас нет списка компьютеров к которым вы планируете подключиться и узнать активного пользователя – это можно сделать через AD. На примере ниже будут возвращены все компьютеры:
Get-ADComputer -Filter *

Операция по получению списка компьютеров может быть очень долгой, если у вас большой парк ПК в AD. Вы можете вернуть только компьютеры, которые не отключены в AD (Disable) следующим способом:
Get-ADComputer -Filter * | where Enabled -eq $True

Можно использовать и фильтрацию. Так я верну компьютеры имена которые начинаются на “CL”:
Get-ADComputer -Filter {Name -like 'CL*'} | where Enabled -eq $True 
Получить список имен мы можем так:
$pc = Get-ADComputer -Filter {Name -like 'CL*'} | where Enabled -eq $True
$pc. Name 
Если у вас список компьютеров не относится к AD или имеет другой формат – то просто преобразуйте его в массив:
# Текст с именами компьютеров $pc = 'Computer1,Computer2,Computer3' # Преобразование в массив $pc_array = $pc -split ',' $pc_array

Удаленное получение залогиненных пользователей
Выше уже рассматривался вариант получения имени пользователя удаленно используя WMI и CIM. Если обе команды, то всех пользователей активных в данный момент мы можем получить так:
# Текст с именами компьютеров
$computers = (Get-AdComputer -Filter *). Name
# Удаленное получение пользователей
foreach ($computer in $computers){ Get-CimInstance -ComputerName $computer -ClassName Win32_ComputerSystem | Select-Object UserName
} Такой подход может привести к ошибкам так как мы не проверяем включены ли компьютеры:

# Текст с именами компьютеров
$computers = (Get-AdComputer -Filter *). Name
# Удаленное получение имен учетных записей
foreach ($computer in $computers){ $result = Get-CimInstance -ComputerName $computer -ClassName Win32_ComputerSystem -ErrorAction SilentlyContinue $computer_login = $result. UserName -split '\\' if ($computer_login){ Write-Host 'ComputerName: ' $computer_login[0] Write-Host 'UserName: ' $computer_login[1] }
} 
Если вы не хотите выполнять команды удаленно через WMI, то вы можете использовать PSRemoting. Команда, которая использует PSRemoting, будет выглядеть примерно так же:
# Текст с именами компьютеров
$computers = (Get-AdComputer -Filter *). Name
# Удаленное получение имен учетных записей
foreach ($computer in $computers){ $result = Invoke-Command -ComputerName $computer ` -ScriptBlock { Get-WMIObject -ClassName Win32_ComputerSystem ` -ErrorAction SilentlyContinue } ` -ErrorAction SilentlyContinue $computer_login = $result. UserName -split '\\' if ($computer_login){ Write-Host 'ComputerName: ' $computer_login[0] Write-Host 'UserName: ' $computer_login[1] }
} 
Получение включенных пользователей AD
Если вам нужно вернуть учетные записи, которые включены в AD выполните следующую команду:
Get-AdUser -Filter * | where 'Enabled' -eq $True

Для возврата только отключенных учетных записей используйте $False.
Такой подход работает и с объектами компьютеров в AD:
Get-AdComputer -Filter * | where 'Enabled' -eq $False
Whoami или WMI
Вы можете вспомнить команду, которая так же возвращает имя пользователя:
whoami

Как можно увидеть она вернет ту же информацию, что и класс WMI. Ситуация меняется, когда эти команды используются удаленно:
# Пользователь вошедший в Windows и открывший Powershell
whoami
# Пользователь, который будет удаленно подключатся через Powershell
$new_psuser = Get-Credential 'admin'
# Способ с whoami
Invoke-Command -ComputerName 'localhost' ` -Credential $new_psuser ` -ScriptBlock {whoami}
# Способ с WMI
Invoke-Command -ComputerName 'localhost' ` -Credential $new_psuser ` -ScriptBlock {(Get-WmiObject -Class Win32_ComputerSystem). UserName} 
Как видно, в случае с whoami у нас вернулось имя учетной записи выполнившей команду Powershell, а с WMI пользователь Windows.

net user [<UserName> {<Password> | *} [<Options>]] [/domain]
net user [<UserName> {<Password> | *} /add [<Options>] [/domain]]
net user [<UserName> [/delete] [/domain]] net user

net user

# Get the user account information for Toms user. net user Toms
C:\>net user Toms
User name Toms
Full Name John Paul
Comment Built-in account for administering the computer/domain
User's comment
Country/region code 000 (System Default)
Account active Yes
Account expires Never
Password last set 7/29/2021 6:55:50 PM
Password expires 9/9/2021 6:55:50 PM
Password changeable 7/30/2021 6:55:50 PM
Password required Yes
User may change password Yes
Workstations allowed All
Logon script
User profile
Home directory
Last logon 8/2/2021 11:53:32 AM
Logon hours allowed All
Local Group Memberships *Administrators
Global Group memberships *Domain Admins *Group Policy Creator *Schema Admins *Domain Users *Enterprise Admins
The command completed successfully.
C:\> 
# Create a new user account on local computer with login name Teresa net user /Add Teresa
# Create a new user account on domain with login name Peter and password Shell@123 net user /Add /domain Peter Shell@123
net user /Add /domain Peter *
# Delete the user on the local computer net user /delete Teresa
# Delete the domain user account net user /delete /domain Peter
net user userid password
net user garyw Test@123
The output of the above command as below

C:\>net user garyw * Type a password for the user: Retype the password to confirm: The command completed successfully.
While typing a password, it won’t display password text on the command line.
net user username /domain net user garyw * /domain

# Disable the user account on domain net user garyw /Active:No /domain
C:\>net user garyw /domain
User name garyw
Full Name Gary Willy
Comment
User's comment
Country/region code 000 (System Default)
Account active No
Account expires Never # Disable local user account net user testadmin /Active:No
# Enables domain user account net user garyw /Active:Yes /domain
net user testadmin /Active:Yes
net user garyw /Passwordchg:No
net user garyw /Passwordchg:Yes
Cool Tip:
How to find active directory groups I m in
using PowerShell!
net user garyw /domain | Find /i "full name"
C:\Windows\system32>net user garyw /domain | Find /i "full name"
Full Name Gary Willy # Set the home directory path for user adams net user adams /domain /add /homedir:C:\users\adams
# Set the home directory path for existing user garyw net user garyw /domain /homedir:C:\users\garyw
Cool Tip:
How to
unlock the ad account in the active directory
using PowerShell!
# Set expire date for local user account
Net User devadmin /expires:03/05/2023
# Set expire date for domain user account
Net User Toms /domain /expires:09/20/2022 
Net User Toms /time:M-F,07:00-16:00
# Set login time to allow user login in specific duration on the domain
Net User garyw /time:M-F,07:00-16:00 /domain




