- List of user groups command line
- Как получить в Powershell список групп и их пользователей
- Примеры с Get-ADGroup Filter
- Получаем список пользователей группы в Powershell Get-ADGroup
- Получение в Powershell групп пользователя
- How to open Local Users and Groups on Windows 10
- Open Local Users and Groups on Windows 10
- 1] Using the Computer Management utility
- 2] Directly by using lusrmgr.msc
- Using the Run box
- Using Windows Search box
- Using Windows 10 Command Prompt
- Using Windows PowerShell command line
- Add or remove Users from Group
- Add a User to Group using Command Prompt
- Remove a User from a Group using Command Prompt
- Add a User to Group using PowerShell
- Remove a User from a Group using PowerShell
- Строим отчет о членстве пользователей в группах AD: 4 проблемы в написании Powershell-скрипта
- Использование .NET для поиска по AD
- Проблема #1: Как найти основную группу пользователя
- Проблема #2: Перевод из одного формата имени в другой
- Проблема #3: Что делать со специальными символами
- Проблема #4: Повышаем производительность
- Get-UsersAndGroups.ps1
- Преодолевая 4 проблемы
- Упрощаем аудит групп и пользователей
List of user groups command line
On Windows OS we can find the list of local user groups created on a system from Contorl Panel -> User Accounts. This information can be obtained from command line also using net command. Syntax is shown below.
Example: Running this command shows the following local groups on my system.
How to list the users in a local group?
Use the below command to know the list of members of a group from command line.
For example to get the list of all remote desktop users on a system we can run the below command.
How to find the list of all groups a user is member of?
You can run the below command to list the groups a user is member of. This command prints the details of the given user account. You can find the group membership information in the last two line of this command output.
Useful references, however “net use username” should be changed to “net user username”
Thank you Kennedy. Corrected the command.
Please get me a command which will display all local users as: LOGIN, FULL NAME, DESCRIPTION, GROUP etc..
I’d just like to express my frustration with this API. As you can see in these examples, thet net API localgroups functionality will happily list all members of a group. However the net user code completely ignores system accounts, as does most of the rest of what Windows makes available. Internally they are organized as a subclass of Win32_Account but not Win32_UserAccount. So it’s possible to retrieve a bunch of useless information from the Windows API. This happens with LookupAccountSid as well. If you give it an SID like S-1-5-20, it will give you an answer. But the answer it gives you can’t be used as input for anything else, which is obnoxious.
You can query if users exist by doing
SET /P query_user=What user do i look for?
::Take out /domain if you want to look on the local computer
Net User %query_user% /domain
if NOT %errorlevel% == 0 goto s_error_1
if %errorlevel% == 0 goto s_success_1
“net user /domain username” lists only the groups to which the username is a direct member. It can’t show nested groups. I was doing a quick check to see if a username was a member of a group:
net user /domain username | find “Group Name”
That fails since the user is not directly a member of “Group Name”. In reality, they are a member, as they’re a member of a nested group.
Any idea of a command line that will expand groups to look for a particular member? I’ve used the “dsquery” and “dsget” commands, but they are only present if the AD tools are installed.
Very useful thanks, didn’t worked for me the first time.
The command is not case sensitive.
For example “NET USER /DOMAIN MYDOMAIN/MyUser” Didn’t worked.
But “NET USER /DOMAIN MyUser” works fine!
So not necessary to put explicitly the domain.
By the way it means also you can’t query another domain than the main one you are logged on to ?
Is there any option where we can get the multiple user’s output in excel for local computer and remote computer
net user userName
Как получить в Powershell список групп и их пользователей
Get-ADGroup — это команда, которая возвращает список групп в Powershell. Для того что бы вывести список пользователей в группе есть другая команда Get-ADGroupMember и мы ее тоже рассмотрим. В этих командлетах есть один обязательный ключ. Для примера так мы выведем весь список групп AD в Powershell:
Навигация по посту
Примеры с Get-ADGroup Filter
Если мы хотим вывести, например, только список групп безопасности, то можно сделать это так:
GroupCategory — это свойство, а eq ищет точное соответствие. Операторы сравнения powershell разбирались тут.
Свойств, которые мы бы хотели вывести или сравнить достаточно много и что бы увидеть их все выполните:
Можно делать сравнивание по нескольким значениям. Если я хочу получить группы созданные 20 дней назад, а так же что бы их тип был Distribution (группа распространения), мне следует сделать так:
Другие примеры рассматриваются дальше.
Получаем список пользователей группы в Powershell Get-ADGroup
Мы можем найти данные по группе указав только имя. В моем случае я ищу группу, где имя заканчивается на marketing:
- Properties — расширяет список стандартных свойств. В нашем случае указываем, что нам нужно получить список пользователей группы в Powershell
- Select — в таком варианте команда выводит список всех свойств, а не только стандартный список
У нас есть и другой способ получить список пользователей группы — это через Get-ADGroupMember. Принцип такой же как и в предыдущих вариантах:
Разница этих двух вариантов в том, что в первом случае мы получаем укороченную информацию о пользователях, а во втором более подробный список.
Для получение пользователей можно сделать и так, но в этом варианте есть минус, что мы должны писать точное соответствие имени:
В описании на сайте Microsoft пишут, что в нем появляется ошибка только в случае, если командлет возвращает более одной группы (в случае использования масок), но у меня так и не получилось это сделать. Вместо имени мы можем использовать SID и GUID.
Получение в Powershell групп пользователя
Обратная ситуация, когда мы хотим узнать в каких группах наш пользователь. Для этого тоже есть несколько вариантов. Первый — это через команду получения пользователей со свойством MemberOf:
Если мы хотим узнать какую либо подробную информацию о группе сделайте так:
Мы можем найти группы пользователя и так:
Но минус этого способа в том, что он будет выполняться дольше. Возможно это будет не заметно с 1000 пользователями, а вот с 50000 может.
How to open Local Users and Groups on Windows 10
Apart from what is visible to you on the login screen, Windows 10 tends to create several users and groups in the background to carry out several tasks on a computer. However, they are not visible to a normal user and are logged in in the background and serve a great deal in permission structuring. Let us learn how to see and to manage Local Users and groups on a Windows 10/8/7 on the computer.
Open Local Users and Groups on Windows 10
The following methods will help you to open and view Local Users and Groups on Windows 10:
- Using the Computer Management utility
- Directly by using lusrmgr.msc.
Let us look at the procedure in detail. We will also take a look at how to add or remove Users from a Group.
1] Using the Computer Management utility
Open the WinX menu and select Computer Management.
From the left side navigation panel, select Local Users and Groups under the expanded list of Computer Management (Local).
You will see two folders here:
- Users and
- Groups.
Expanding each will give you the required details.
2] Directly by using lusrmgr.msc
To open Local Users and Groups window, you have to invoke its process, which is called lusrmgr.msc, and you can do this in the following four ways.
Using the Run box
Hit the Windows Key + R button combination on your keyboard.
Type in lusrmgr.msc and hit Enter.
It will open the Local Users and Groups window.
Using Windows Search box
Hit the Windows Key + S button combination on your keyboard. It will launch the Windows Search Box.
Search for lusrmgr.msc and hit Enter.
The Local Users and Group window will now be open.
Using Windows 10 Command Prompt
Open Windows Command Prompt and execute the following command:
You will arrive at your destination window.
Using Windows PowerShell command line
Open Windows PowerShell and execute the following command:
It will open at your destination window.
Add or remove Users from Group
To add or remove Users from a Group:
- Open the Groups folder
- Select the Group
- Double-click on the group
- Under the Members box, select the user you want to delete.
- Click on the Delete button.
To add a User, click the Add button and follow the process.
Add a User to Group using Command Prompt
You need to execute the following command:
Replace GROUP and USER with the actual names.
Remove a User from a Group using Command Prompt
You need to execute the following command:
Replace GROUP and USER with the actual names.
Add a User to Group using PowerShell
You need to execute the following command:
Replace GROUP and USER with the actual names.
Remove a User from a Group using PowerShell
You need to execute the following command:
Replace GROUP and USER with the actual names.
I hope this helps.
Windows 10 Home user? These links may interest you:
- Use freeware Lusrmgr tool to access Local User and Group Management in Windows 10 Home
- Open and Manage Local User and Group Management in Windows 10 Home using Command Prompt or PowerShell.
Строим отчет о членстве пользователей в группах AD: 4 проблемы в написании Powershell-скрипта
Билл Стюарт, scripting guru, в своей статье на WindowsITPro описывает те проблемы, с которыми ему пришлось столкнуться при написании Powershell-скрипта, который бы выводил членство пользователей в группах Active Directory. Пришлось проделать 4 усовершенствования, чтобы все заработало как надо. Узнать, как Билл реализовал таки вывод членства в группах, и скачать сам Powershell-скрипт Вы можете под катом.
Ссылка на окончательный вариант скрипта.
www.windowsitpro.com/content/content/141463/141463.zip
Я сбился со счету, сколько раз я уже встречал на форумах вопрос: “Кто-нибудь знает, как получить информацию обо всех пользователях и их членстве в группах в домене AD?”. Аудиторы и консультанты по информационной безопасности также задают подобный вопрос, когда осуществляют оценку инфраструктуры (среды) Active Directory в организации. Так как этот вопрос довольно насущный, я решил написать PowerShell скрипт, который бы позволял упростить эту задачу.
Сначала я думал, что написать подобный скрипт – пара пустяков, но на моем пути встретились 4 препятствия, которые усложнили мою работу. Я опишу эти проблемы, чуть позже, но сначала мне хотелось бы рассказать об основах использования Microsoft.NET в Powershell при поиске по AD.
Использование .NET для поиска по AD
Используя .NET для поиска по AD, Вы можете использовать type accelerator в PowerShell для поиска объектов. (Type accelerator – сокращенное имя для .NET класса). Например, введите следующую команду, чтобы вывести список всех пользователей в данном домене:
[ ADSISearcher] – это type accelerator для объекта .NET System.DirectoryServices.DirectorySearcher. Строка, идущая после данного type accelerator, задает свойства SearchFilter для данного объекта, чтобы найти все объекты пользователей, и метод FindAll начинает поиск. На выходе мы получаем список объектов System.DirectoryServices.SearchResult.
Затем мы хотим определить, в какой группе состоит пользователь. Чтобы узнать, мы можем использовать коллекцию свойств (Properties collection) из объекта SearchResult и извлечь такой атрибут объекта как memberof. Используя переменную $searcher из предыдущего примера, мы можем использовать метод FindOne (вместо FindAll), чтобы извлечь один результат и вывести членство пользователя в группах:
Первая команда находит первого пользователя, который удовлетворяет поисковому фильтру, а вторая команда выводит список в групп, в которых пользователь состоит.
Однако если внимательно посмотреть на этот список, то можно заметить отсутствие важной детали: основная группа (primary group) пользователя не включена в атрибут memberof. Хотелось бы получить полный список групп (включая основную группу), что приводит нас к первой проблеме.
Проблема #1: Как найти основную группу пользователя
Есть обходной путь для исключения основной группы из атрибута memberof. Он описан в этой статье support.microsoft.com/kb/321360 Совершаем следующие действия:
- Связываемся (connect to) с объектом пользователя, используя WinNT provider (вместо LDAP provider).
- Извлекайте атрибут пользователя primaryGroupID .
- Извлекайте имена групп пользователя, используя WinNT provider, который включает основную группу.
- Осуществляйте поиск в AD этих групп, используях их sAMAccountName атрибуты.
- Находим группу, в которой атрибут primaryGroupToken совпадает с атрибутом пользователя primaryGroupID.
Проблема с этим “обходным путем” заключается в том, что он требует, чтобы скрипт WinNT provider для подключения к объекту пользователя. То есть, необходимо, чтобы скрипт перевел различающееся имя пользователя (например, CN=Ken Myer,OU=Marketing,DC=fabrikam,DC=com) в формат, который WinNT provider может использовать (например, WinNT://FABRIKAM/kenmyer,User).
Проблема #2: Перевод из одного формата имени в другой
Объект NameTranslate является COM (ActiveX) объектом, который использует интерфейс IADsNameTranslate, осуществляющий перевод имен объектов AD в переменные (чередующиеся, alternate) форматы. Вы можете использовать объект NameTranslate, создав объект и затем вызвав его Init метод для инициализации. Например, список 1 показывает код VBScript скрипта, которые создает и инициализирует NameTranslate.
Список 1: Создание и инициализация объекта NameTranslate в VBScript
Однако объект NameTranslate не работает так, как ожидалось в PowerShell, что показано на рисунке 1.
Рис 1: Неожиданное поведения объекта NameTranslate в PowerShell
Проблема заключается в том, что в объекте NameTranslate отсутствует библиотека типов, которые .NET (а следовательно и PowerShell) использует для предоставление простого доступа к COM-объектам. Но к счастью и эту проблему можно обойти: метод .NET InvokeMember позволяет PowerShell получить или установить свойства или вызвать метод из COM-объекта, который отсутствует в библиотеке типов. Список 2 показывает Powershell эквивалент кода скрипта VBScript, приведенного в таблице 1
Список 2: Создание и инициализация объекта NameTranslate в PowerShell
Я хотел, чтобы скрипт решал другую проблему, связанную с именем. Атрибут memberof для пользователя AD содержит список различающихся имен, в которых пользователь состоит, но вместо этого я хотел получить атрибут samaccountname для каждой группы. Скрипт использует объект NameTranslate, чтобы справиться с этой проблемой.
Проблема #3: Что делать со специальными символами
Документация Microsoft относительно различающихся имен упоминает, что отдельные символы должны быть опущены (например, с префиксом “\”) для того, чтобы быть правильным образом интерпретированы (в этой статье написано подробнее). К счастью, COM-объект Pathname дает такую возможность. Скрипт использует объект Pathname, чтобы пропустить те различающиеся имена, которые содержат специальные символы. Объект Pathname также требует .NET метод InvokeMember потому что, также как и объект NameTranslate, у этого объекта отсутствует библиотека типов.
Проблема #4: Повышаем производительность
Если оглянуться на Проблему #1 (Как найти основную группу пользователя), можно заметить, что обходное решение требует поиск групп пользователя. Проделав эту процедуру для нескольких учетных записей, Вы поймете, насколько она неоптимальна. Извлечение атрибута samaccountname для каждой группы в атрибуте memberof, о котором я упомянул, рассматривая Проблему #2 (Перевод из одного формата имени в другой) также неоптимально и отнимает много времени. Чтобы решить эту проблему скрипт использует две глобальные хеш-таблицы (global hash tables), которые производят хеширование результатов для повышения произодительности.
Get-UsersAndGroups.ps1
Get-UsersAndGroups.ps1 — это готовый Powershell-скрипт, который выводит список пользователей и их членства в группах. Синтаксис командной строки скрипта следующий:
Параметр -SearchLocation представляет собой одно или несколько различающихся имен для учетных записей пользователей. Потому что различающееся имя содержит запятые (,), их необходимо помещать в скобки (одинарные или двойные) каждое различающееся имя, чтобы PowerShell не интерпретировал их как массив. Имя параметра -SearchLocation опционально. Скрипт также принимает конвейерный ввод (pipeline input); каждое значение из конвейера должно являться различающимся именем, которое необходимо искать.
Значение -SearchScope обозначает возможный масштаб поиска по AD. Это значение должно быть одним из трех: Base – Поиск ограничивается базовым объектом, не используется; OneLevel – поиск ближайших дочерних объектов базового объекта и Subtree – поиск по подветке. Если это значение не уточнено, то по умолчанию используется Subtree. Используйте -SearchScope OneLevel, если Вы хотите определенное подразделение (OU), но ни одна из OU не вложена в него. Скрипт выводит объекты, которые содержат свойства, перечисленные в таблице 1.
Преодолевая 4 проблемы
Скрипт решает вышеописанные проблемы:
- Проблема #1: Как найти основную группу пользователя: Функция get-primarygroupname возвращает имя основной группы пользователя.
- Проблема #2: Перевод из одного формата имени в другой: Скрипт использует COM-объект NameTranslate, чтобы осуществить перевод из одного формата имени в другое.
- Проблема #3: Что делать со специальными символами: Скрипт использует функцию get-escaped, которая использует объект Pathname, чтобы возвратить различающиеся имена с вставленными пропущенными символами (там, где это необходимо).
- Проблема #4: Повышаем производительность: Скрипт использует хэш-таблицы $PrimaryGroups и $Groups. Ключи в хеш-таблице $PrimaryGroups являютяются идентификаторами основной группы и их значения – атрибутами samaccountname основной группы.
Упрощаем аудит групп и пользователей
Написание скрипта Get-UsersAndGroups.ps1 оказалось не таким уж и простым, как мне казалось с первого взгляда, но проще сделать нельзя. Простейшее приложение скрипта –следующая команда:
Она создает .csv файл, который содержит полный список пользователей и групп для данного домена. Имя в своем арсенале такой скрипт, мы можете быстро и без проблем создать отчет по группам и пользователям.