Get all Groups a user is a member of
Consider you have a domain user, and you would like to check which local and global groups a user is a member of. but
- You didn’t have permission on the Active Directory.
- Or you can’t import Active Directory Module.
In this case, you can easily use “net user” cmdlet to Get all Groups a user is a member of as the following:
Which groups a user is a member of using Command Prompt
Steps
Run Command Prompt / Windows Power-Shell as administrator.
Run the below cmdlet.
In my scenario, I would like to know if the “spfarm” user is a member of the Domain Admins group or not.
Check Global and local Group Membership line to find all groups in that a user “spepmfarm” is a member of.
Besides this method is an easy and fast, it’s very helpful to check:
- If the account is active and not disabled.
- Account expiration status.
- When the account password expires.
- The last date password changed.
- If the account can change its password.
- Last logon.
- Which local group a user is a member of.
- Which global domain group a user is a member of.
Get Group Membership PowerShell
The previous method is very helpful and doesn’t require permission on the AD server to get all groups a user is a member of. but as we earlier mentioned, if the group name is long (> 21 chars) it will truncate the group name.
So in this case, you can use the build-in “Get-ADPrincipalGroupMembership” to get Get all Groups a user is a member of using PowerShell.
Steps
Run Windows PowerShell as Administrator.
Import Active Directory Module.
Note: if you can’t import AD module, try to install RAST feature as the following:
Run “Get-ADPrincipalGroupMembership“.
Check Group Scope Using PowerShell
Groups are characterized by a scope to define where the group can be granted permissions.
There are three group scopes are defined by Active Directory:
- Domain Local.
- Global.
- Universal.
To check if a group scope using PowerShell, you should select “Groupscope” as shown below:
Get Local Security Group for a user is a member of
If the above cmdlets is not working for any reason, so in this case, you should try the following:
Alternatively, you can also use the below power-shell cmdlet that not requires to import AD module.
This cmdlet gives you the same result as shown below
Conclusion
In conclusion we have learned how to get all groups a user is a member of, we have also learned how to get local and global Group Membership for a user is a member of using PowerShell.
Applies To
- Windows PowerShell.
- Command Prompt.
- Windows Server 2016.
- Windows Server 2012.
You might also like to read
- Logon failure: The user has not been granted the requested logon type at this computer.
- Open URL in a browser in PowerShell.
- Show only two numbers after fractions for long decimal in PowerShell Script.
- Windows Server 2016: Switch from Server Core to Desktop Experience.
Добавление сервера в домен
Добавление сервера в домен, смена IP – это большая задача, которая иногда становится утомительной, так почему бы не автоматизировать ее. Скрипт работает безупречно и без каких-либо заминок. Это отличный вариант в категории скриптов Active Directory Powershell.
Как это работает
Обычно скрипт просит предоставить IP контроллера домена, что является главным требованием при добавлении сервера в домен. После этого он обычно просит указать имя домена, например xyz.com, и перезагружает сервер без предварительного запроса.
Вероятный результат
После запуска этого скрипта первым делом войдите в систему с доменными учетными данными, чтобы проверить, можете ли вы войти в систему или нет.
Adding Servers into Domain Powershell Scripts
## Pre-requisite:- #1). Update the Primary DNS IP in the Network adapter before joining server\machine to domain by running below cmd. ## For single server\machine to be added to domain. set-DnsClientServerAddress-InterfaceIndex 2 -ServerAddresses ("Primary DNS IP address") set-DnsClientServerAddress -InterfaceAlias Ethernet -AddressFamily IPv4 |Select-Object ServerAddresses #Once DNS IP is updated, then execute below cmd. Add-Computer -ComputerName $computers -Domain "YourDomainName" -Restart #Give your domain credentials in the credential request window. *************************************************************************************************************************************** ## For multiple server\machine to be added to domain. set-DnsClientServerAddress -InterfaceIndex 2 -ServerAddresses ("Primary DNS IP address") set-DnsClientServerAddress -InterfaceAlias Ethernet -AddressFamily IPv4 |Select-Object ServerAddresses #Once DNS IP is updated on machines, then execute below cmd. $computers = Get-Content -Path c:\test\desktop\computers.txt Add-Computer -ComputerName $computers -Domain "YourDomainName" -Restart #Give your domain credentials in the credential request window.
Отчеты Active Directory с помощью диспетчера прав доступа SolarWinds (БЕСПЛАТНАЯ пробная версия)
Генерация отчетов в Active Directory необходима для оптимизации производительности и обеспечения соответствия нормативным требованиям. Одним из лучших инструментов отчетности Active Directory является SolarWinds Access Rights Manager (ARM). Инструмент был создан, чтобы повысить наглядность того, как используются и управляются учетные данные каталога. Например, вы можете просматривать учетные записи с небезопасными конфигурациями и злоупотреблениями учетными данными, которые могут указывать на кибератаку.
Использование стороннего инструмента, такого как SolarWinds Access Rights Manager это выгодно, потому что предоставляет вам информацию и функции, к которым было бы гораздо сложнее или невозможно получить доступ напрямую через Active Directory.
Помимо создания отчетов вы можете автоматически удалять неактивные или просроченные аккаунты что цель киберпреступников. SolarWinds Access Rights Manager начинается с 3444 долларов (2829 фунтов). Также есть 30-дневная бесплатная пробная версия версия, которую вы можете скачать.
SolarWinds Access Rights ManagerЗагрузить 30-дневную бесплатную пробную версию
Установка модуля Powershell Active Directory на Windows Server
Active Directory для Windows PowerShell уже встроен в операционные системы Windows Server (начиная с Windows Server 2008 R2), но по умолчанию не включен.
В Windows Server 2016, 2019 и 2022 вы можете установить модуль AD для PowerShell из Диспетчера серверов (Добавить роли и компоненты → Функции → Инструменты удалённого администрирования сервера → Инструменты администрирования ролей → Инструменты AD DS и AD LDS → Модуль Active Directory для Windows PowerShell).
В англоязычной версии сервера это соответственно в Server Manager: Add Roles and Features → Features → Remote Server Administration Tools → Role Administration Tools → AD DS and AD LDS Tools → Active Directory module for Windows PowerShell.
Если вы уже установили роль Active Directory Domain Services, то это означает, что модуль Powershell Active Directory уже активирован и дополнительных действий предпринимать не нужно.
Вы также можете установить модуль из консоли PowerShell с помощью команды:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature
Вы можете установить RSAT-AD-PowerShell не только на контроллеры домена. Подойдёт любой рядовой сервер домена или даже рабочая станция. Модуль PowerShell Active Directory устанавливается автоматически при развёртывании роли доменных служб Active Directory (AD DS) (при повышении уровня сервера до контроллера домена AD).
Модуль взаимодействует с AD через веб-службу Active Directory, которая должна быть установлена на вашем контроллере домена (связь осуществляется через TCP-порт 9389).
Командлеты Active Directory PowerShell
В модуле Active Directory для Windows PowerShell есть множество командлетов для взаимодействия с AD. Каждая новая версия RSAT содержит больше командлетов, чем предыдущая. В Windows Server 2022 доступно 147 командлетов PowerShell для Active Directory.
Перед использованием командлетов модуля Active Directory вам необходимо импортировать его в сеанс PowerShell:
Import-Module ActiveDirectory
Начиная с Windows Server 2012 R2, Windows 8.1 и в последующих версиях модуль импортируется автоматически.
Если модуль Active Directory не установлен на вашем компьютере, вы можете импортировать его со своего контроллера домена (для этого вам нужны права администратора домена) или с другого настольного компьютера:
$psSess = New-PSSession -ComputerName ИМЯ_КОМПЬЮТЕРА Import-Module -PSsession $psSess -Name ActiveDirectory
В этих командах ИМЯ_КОМПЬЮТЕРА — это компьютер, который является Контроллером Домена, либо компьютером, на котором установлен модуль Powershell Active Directory.
Вы можете отобразить полный список доступных командлетов Active Directory с помощью команды:
Get-Command -module ActiveDirectory
Чтобы посчитать общее количество командлетов в модуле AD выполните команду:
Get-Command -module ActiveDirectory | measure-object | select count
Большинство командлетов RSAT-AD-PowerShell начинаются с префиксов Get-, Set- или New-.
- Командлеты Get- класса используются для получения различной информации из Active Directory (Get-ADUser — свойства пользователя, Get-ADComputer — настройки компьютера, Get-ADGroupMember — членство в группе и так далее). Чтобы запустить их, вам не нужно быть администратором домена. Любой пользователь домена может запускать команды PowerShell для получения значений атрибутов объекта AD (кроме конфиденциальных, как в примере с LAPS);
- Командлеты класса Set- используются для установки (изменения) параметров объекта в Active Directory. Например, вы можете изменить свойства пользователя (Set-ADUser), настройки компьютера (Set-ADComputer), добавить пользователя в группу и так далее. Для этого у вашей учётной записи должны быть разрешения на изменение свойств объекта;
- Команды, начинающиеся с New- позволяют создавать объекты AD (создать пользователя – New-ADUser, создать группу – New-ADGroup);
- Командлеты Remove- используются для удаления объектов AD.
Так вы можете получить помощь по любому командлету:
Get-Help КОМАНДЛЕТ Get-Help КОМАНДЛЕТ -Full
Вы можете отобразить примеры использования командлетов Active Directory следующим образом:
(Get-Help КОМАНДЛЕТ).examples
Или:
Get-Help КОМАНДЛЕТ -Examples
Всплывающие подсказки удобно использовать при вводе параметров командлета в PowerShell ISE.
Собрали подборку из Active Directory20 лучших скриптов Powershell для работы с Active Directory.
Ниже я собрал некоторые из лучших скриптов Active directory Powershell, которые, несомненно, сэкономят ваше время. Управление доменом – это работа Active Directory, и понимание каждого компонента является обязательным. Active Directory состоит из пользователей, групп, которые можно проверить в Active directory users and computers (ADUC). Создание пользователя в домене или сохранение пользователя в домене – это работа системного администратора windows.
Работая много лет, я столкнулся со многими проблемами в качестве системного администратора windows. Иногда создание пользователей или групп в домене занимает значительное время. Это процесс можно автоматизировать, чтобы сэкономить время. В данной статье есть скрипты DNS powershell, скрипты DHCP powershell.
Add-AdGroupMember — Добавление пользователей в группу AD
Вы можете добавлять пользователей в группу Active Directory с помощью командлета Add-AdGroupMember. Добавьте двух новых пользователей в новую группу:
Add-AdGroupMember -Identity TestADGroup -Members Alex, MiAl
Если список пользователей, добавляемых в группу, довольно велик, вы можете сохранить список учётных записей пользователей в файл CSV, затем импортировать этот файл и добавить каждого пользователя в группу.
Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}
Формат файла CSV должен быть следующим: пользователи должны быть перечислены по одному в строке с пользователями в качестве заголовка столбца.
Чтобы получить всех членов группы (groupX) и добавить их в другую группу (groupY), используйте эту команду:
Get-ADGroupMember "GroupX" | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "Group-Y" -Members $_}
Если вам нужно скопировать членов всех подгрупп (рекурсивно) в новую группу, выполните эту команду:
Get-ADGroupMember -Identity "GroupX" -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "GroupY" -Members $_}
Reporting on Active Directory Groups
Now that we know how to perform many common Active Directory management tasks related to groups using PowerShell, let’s see how to report on what groups exist in AD:
To list all groups in AD, use the script below:
Get-ADGroup -filter * -properties GroupCategory | ft name,groupcategory
Of course, you’ll also want to review AD group members and AD group membership changes. Here are links to instructions for performing those more complex tasks:
- How to Monitor Active Directory Group Membership Changes
- How to Get AD User Group Membership Reports
- How to Export Members of a Particular AD Group
- Managing OUs and Moving Their Objects with PowerShell
Find ADUser With Identity Parameter
Get-ADUser using the -Identity Parameter is typically the most commonly used parameter when people want to query a specific user. This is because the -Identity parameter is positioned as the first parameter so it can be omitted when running the actual query.
Example: will produce the exact same results as
There are 4 attributes that are allowed when using Identity parameter. Let’s list them here along with an example of what it typically looks like.
- Distinguished Name
CN=Arya Stark,OU=Excluded,DC=ad,DC=thesysadminchannel,DC=com
- ObjectGuid
643d7cb4-9682-4835-908d-d696ed476649
- Security Identifier (SID)
S-1-5-21-3946430794-117524452-1540306727-8620
- sAMAccountName (username)
aryastark
Example of the 4 attributes that are accepted
Installing the AD PowerShell Module on Windows 10 and 11
In Windows 11, Windows 10, Windows 8.1, and Windows 7, to install the RSAT-AD-PowerShell module, first you must install the appropriate version of RSAT. RSAT is available for installation for Professional, Education, and Enterprise Windows editions (Windows Home or Single Language are not supported).
On modern Windows 10 builds (1809 and newer) the RSAT became a part of Features on Demand (FoD). You can install AD RSAT Tools from the Settings menu (Settings > Apps > Manage Optional Features > Add features > RSAT: Active Directory Domain Services and Lightweight Directory Tools > Install).
Or from the PowerShell console:
Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”
You will need to make sure that your security policies, firewalls, and proxies are allowed to access Microsoft Update servers on the Internet to download and install FOD components.
On Windows 11, you can install the Active Directory RSAT package from Settings > Apps > Optional Features > Add an optional feature > type Active Directory in the search box and select the RSAT: Active Directory Domain Services and Lightweight Directory Tools feature > Next > Install.
Or you can install the module from the elevated PowerShell console:
Get-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -Online | Add-WindowsCapability -Online
You don’t have to reboot Windows after installing RSAT.
In order to RSAT module on Windows 7, 8.1, and Windows 10 (up to build 1803) you need to download and install a special MSU package See how to install Remote Server Administration Tools on Windows.
Then you need to enable the module (Control Panel > Programs > Turn Windows Features On or Off > Remote Server Administration Tools > Role Administration Tools > AD DS and AD LDS Tools > Active Directory module for Windows PowerShell).
Or using PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
Install PowerShell Active Directory Module on Windows Server
The Active Directory module for Windows PowerShell first appeared on Windows Server 2008 R2. It is automatically deployed on Windows Server after you installed the ADDS role (Active Directory Domain Services) when promoting a server to the domain controller. You can install this module manually on any member Windows server or workstation.
You can install the Active Directory module for Windows PowerShell on Windows Server 2019/2016/2012 R2 using the Add Roles and Features Wizard from the Server Manager. It is enough to start the wizard and at the step when selecting features, you need to select the item Remote Server Administration Tools > Role Administration Tools > AD DS and AD LDS Tools > Active Directory module for Windows PowerShell;
You can also install this module using PowerShell. Open the PowerShell console as an administrator and run the following commands:
Import-Module ServerManager Add-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
You can also use DISM to install the AD PowerShell module on Windows:
DISM /online /enable-feature /featurename:RSATClient-Roles-AD DISM /online /enable-feature /featurename:RSATClient-Roles-AD-DS DISM /online /enable-feature /featurename:RSATClient-Roles-AD-DS-SnapIns
To check the installation status of a module, use the command:
Get-WindowsFeature RSAT-AD-PowerShell
Get-ADUser From A Different Domain
If you happen to have multiple Domains in your forest and you’re too lazy to Remote Desktop into a Domain Controller on that domain to run the query (guilty of it myself from time to time), it’s absolutely helpful to be able to run your query from a single machine. You can do this by combining two of the parameters above. Those parameters being as well as .
I don’t have any other domains in my forest so I won’t be able to provide a working screenshot. However, one thing to keep in mind is that you’ll need to provide the Fully Qualified Domain Name (FQDN) for the remote DC. Overall, the basic syntax should look like this:
#Save user credentials into a variable using Get-Credential $Credential = Get-Credential -UserName 'otherdomain\myaccount' -Message 'Enter in a Password' Get-ADUser myaccount -Server DC01.otherdomain.thesysadminchannel.com -Credential $Credential
StartManager 1.4 – Развитие альтернативного стартера Промо
Стартеры 1С v7.7 v8 Абонемент ($m)
Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.
1 стартмани
23.04.2014 132720 1727 Alexoniq 1560
TextRadar – нечеткий поиск в тексте
Разработка внешних компонент Поиск данных v8 1cv8.cf Абонемент ($m)
В отличие от нечеткого сравнения строк, когда обе сравниваемых строки равнозначны, в задаче нечеткого поиска выделяются строка поиска и строка данных, а вычислить необходимо не степень похожести двух строк, а степень присутствия строки поиска в строке данных. Нормированный коэффициент, находящийся между 0 и 1 позволяет отсечь заведомо низкие результаты, организовать поиск по синонимам и т.д. Наглядное отображение результатов в кратком и детальном виде поможет быстро найти интересующий фрагмент.
1 стартмани
19.09.2018 19234 30 TSSV 19
Полезные командлеты Windows PowerShell
В данном разделе я перечислю командлеты PowerShell, которые Вы точно будете использовать.
- Get-Help – показывает справку по командлету, функции и общую справку по Windows PowerShell. Справка бывает нескольких типов: краткая, детальная, полная и вывод только примеров;
- Update-Help — загружает и устанавливает новые файлы справки, т.е. обновление справки;
- Get-Command – командлет поиска нужной команды, можно искать как по глаголу, так и по существительному, также возможно использование маски, если Вы не знаете точное наименование глагола или существительного;
- Get-Alias – показывает псевдонимы, все или конкретной команды;
- Get-PSDrive – показывает подключенные диски;
- Get-Member – выводит свойства и методы, которые есть у объекта;
- Get-WindowsFeature – выводит сведения о доступных ролях и компонентах сервера;
- Install-WindowsFeature (эквивалентен Add-WindowsFeature) — устанавливает роли или компоненты на указанный сервер;
- Uninstall-WindowsFeature (эквивалентен Remove-WindowsFeature) – удаляет роли или компонента сервера;
- Get-History — возвращает список команд, введенных в ходе текущей сессии.
Display All Of The Properties For A Specified User
All Active Directory users have the same core attributes populated but they’re not displayed by default. If you notice in the examples above, I had to specify in order for Powershell to know to check those AD properties. If you omit the property parameter, the filter won’t find it even though the attribute is there on the user’s account.
A good thing is this allows a wildcard (*) so you can see what’s available. I would also recommend to explicitly specify your properties when querying many users so you’re not putting to much stress on the remote Domain Controller.
#Get all properties for a user. Get-ADUser aryastark -Properties *
Понижение контроллера домена
Первым шагом понизим наш сервер до рядового сервера. Это можно сделать с помощью графического интерфейса, Powershell или командной строки.
Графика
Открываем Диспетчер серверов и переходим в Управление — Удалить роли и компоненты:
Если откроется окно с приветствием, то просто нажимаем Далее (при желании, можно поставить галочку Пропускать эту страницу по умолчанию):
В окне «Выбор целевого сервера» выбираем сервер, для которого мы будем понижать уровень AD:
… и нажимаем Далее.
Снимаем галочку Доменные службы Active Directory. откроется окно в котором отобразится список компонентов для удаления — нажимаем Удалить компоненты:
В следующем окне мы увидим предупреждение о том, что компьютер будет перезагружен и возможность принудительно понизить уровень — просто нажимаем Далее:
Система отобразит роли AD, которые будут удалены. Ставим галочку Продолжить удаление и нажимаем Далее:
Вводим дважды пароль учетной записи локального администратора, который будет использоваться после понижения до рядового сервера:
Кликаем по Понизить уровень:
Процесс займет какое-то время. После мы увидим «Уровень контроллера домена Active Directory успешно понижен»:
Сервер автоматически будет перезагружен.
Powershell
Открываем консоль Powershell от администратора и вводим:
Uninstall-ADDSDomainController
Система запросит пароль для локальной учетной записи администратора, которая будет использоваться после понижения — задаем новый пароль дважды:
LocalAdministratorPassword: **********
Подтвердить LocalAdministratorPassword: **********
Мы получим предупреждение о перезагрузки сервера. Соглашаемся:
После завершения этой операции сервер будет автоматически перезапущен. Когда вы удалите доменные службы Active
Directory на последнем контроллере домена, этот домен перестанет существовать.
Вы хотите продолжить эту операцию?
Да — Y Да для всех — A Нет — N Нет для всех — L Приостановить — S Справка
(значением по умолчанию является «Y»): A
Для выполнения команды уйдет некоторое время, после чего сервер уйдет в перезагрузку.
Работа с Hyper-V
Для работы с Hyper-V в Windows PowerShell существует много командлетов, вот небольшой перечень:
- New-VM — создание новой виртуальной машины;
- Set-VM — настройка виртуальной машины;
- Start-VM — запуск виртуальной машины;
- Stop-VM — закрытие, выключение или сохранение виртуальной машины;
- Import-VM — импорт виртуальной машины из файла;
- Move-VM — перемещение виртуальной машины на новый Hyper-V хост;
- Remove-VM — удаление виртуальной машины;
- Rename-VM — переименование виртуальной машины;
- New-VHD — создание одного или нескольких новых виртуальных жестких дисков;
- Set-VHD – настройка виртуального жесткого диска;
- Test-VHD — тестирование виртуального жесткого диска на предмет обнаружения проблем, которые сделали бы его непригодным для использования;
- Add-VMDvdDrive — добавляет DVD диск к виртуальной машине;
- Remove-VMDvdDrive — удаляет DVD-диск из виртуальной машины;
- Add-VMHardDiskDrive — добавляет жесткий диск к виртуальной машине;
- Remove-VMHardDiskDrive — удаляет один или несколько виртуальных жестких дисков (VHD) из виртуальной машины;
- Add-VMNetworkAdapter — добавляет виртуальный сетевой адаптер на виртуальной машине;
- Remove-VMNetworkAdapter — удаляет один или несколько виртуальных сетевых адаптеров из виртуальной машины;
- Copy-VMFile — копирование файлов на виртуальную машину;
- Get-VMVideo – выводит информацию о настройках видео для виртуальных машин;
- Move-VMStorage — перемещение хранилища виртуальной машины.