Как добавить пользователя в группу в PowerShell с помощью Add-ADGroupMember
Когда вам нужно добавить несколько пользователей в группу Active Directory, то использование PowerShell действительно является вашим лучшим вариантом. Вместо того чтобы вручную искать всех пользователей, вы можете быстро добавить пользователей в группу с помощью PowerShell.
Добавление или удаление пользователей из групп AD является одной из повседневных задач системного администратора. Когда речь идет только о одном пользователе, можно прекрасно воспользоваться консолью управления Active Directory. Но когда вам нужно массово обновить пользователей, то PowerShell - это то, что вам нужно.
В этой статье я объясню, как вы можете добавить одного или нескольких пользователей в группу с помощью PowerShell. Также мы рассмотрим, как использовать CSV-файл с пользователями, чтобы добавить их в группу. В конце вы найдете два скрипта PowerShell, которые позволят вам легко импортировать CSV-файлы.
PowerShell - добавить пользователя в группу с помощью Add-ADGroupMember
Чтобы добавить пользователей в группу в PowerShell, мы будем использовать командлет Add-ADGroupMember. Убедитесь, что вы установили модуль Active Directory для PowerShell, прежде чем мы начнем.
В cmdlet Add-ADGroupMember можно использовать для добавления пользователей, служебных учетных записей, компьютеров или даже других групп в группу AD. Cmdlet только требует идентификатор группы, в которую вы хотите добавить членов, и список членов для добавления.
Для указания группы и её участников мы можем использовать следующие значения:
- распознаваемое имя
- objectGUID (GUID)
- objectSid (идентификатор безопасности)
- SAMAccountName (Имя учетной записи менеджера безопасности)
Итак, чтобы добавить одного пользователя в группу "SG_PowerBi", мы можем использовать имя группы, которое является SAMAccountName группы. А также для пользователя мы будем использовать SAMAccountName:
Adding user Alan Rhodes to the group SG_PowerBi
Add-ADGroupMember -Identity "SG_PowerBi" -Members arhodesКоманда не выдаст никакого вывода, но мы можем проверить участника с помощью PowerShell, используя командлет Get-ADGroupMember:
Get-ADGroupMember -Identity "SG_PowerBi" | ftДобавление нескольких пользователей в группу
Добавление одного пользователя в группу также можно выполнить с помощью консоли Active Directory пользователей и компьютеров. Но когда вам нужно добавить несколько пользователей в группу, использование PowerShell может быть намного быстрее.
Существует несколько способов добавить нескольких пользователей в группу с помощью PowerShell. Самый распространенный вариант — просто указать пользователей:
Adding the users Alan Rhodes, Flenn Parker and Mike Reyes to the group SG_PowerBi
Add-ADGroupMember -Identity "SG_PowerBi" -Members arhodes, fparker, mreyesНо для этого вам нужно знать SAMAccountName каждого пользователя. Другой вариант - сначала получить пользователей на основе фильтра, например, по должности, а затем добавить их в группу. Чтобы получить пользователей, мы будем использовать командлет Get-ADUser.
Сначала мы получим всех пользователей с должностью "менеджер по работе с клиентами", а затем добавим каждого пользователя в группу SG_PowerBi:
Get all users with the job title "Account Manager" and add them to the group SG_PowerBi
Get-ADUser -Filter "title -eq 'account manager'" | ForEach-Object { Add-ADGroupMember -Identity "SG_PowerBi" -Members $_ }Скопировать участников группы в другую группу с помощью PowerShell
Также возможно скопировать членов группы в другую группу с помощью PowerShell. Но учтите, что вы также можете добавить группу в другую группу в Active Directory.
Чтобы скопировать участников группы, сначала мы получим всех участников существующей группы и скопируем их в новую группу. Для этого мы будем использовать командлет Get-ADGroupMember.
Get all the users from the group Sales Management and add them to the group SG_PowerBi
Get-ADGroupMember -Identity "Sales Management" | ForEach-Object { Add-ADGroupMember -Identity "SG_PowerBi" -Members $_ }
В качестве альтернативы вы также можете добавить группу «Управление продажами» в группу «SG_PowerBi»:
Add-ADGroupMember -Identity "SG_PowerBi" -Members "Sales Management"Добавить пользователей в группу из CSV с помощью PowerShell
Когда вам нужно добавить много пользователей в группу, иногда проще всего использовать файл CSV. В файле CSV мы можем легко добавить всех пользователей. С помощью PowerShell мы можем считать файл CSV и добавить всех пользователей в правильную группу.
Я создал небольшой скрипт PowerShell, который импортирует CSV-файл и добавляет всех пользователей из CSV-файла в выбранную группу. Я сделал скрипт максимально гибким, так что для пользователей вы можете использовать их отображаемое имя, электронную почту или UserPrincipalName.
Сценарии требуют имя группы и путь к CSV-файлу. По умолчанию используется запятая в качестве разделителя для CSV-файла, а пользователи ищутся на основе отображаемого имени.
Для CSV файла вы можете создать простой список с пользователями, заголовки внутри CSV файла не нужны:
Bob Davis,
Erik Parker,
Jean Miles,
Kelly Rices,
Margie Baker,
Mathew Scott,
Owen Hopkins,Вы можете скопировать скрипт ниже или скачать его здесь с моей страницы на Github.
[CmdletBinding()]
param (
[Parameter(
Mandatory = $true,
HelpMessage = "Group name"
)]
[string] $groupName = "",
[Parameter(
Mandatory = $true,
HelpMessage = "Path to CSV file"
)]
[string] $path = "",
[Parameter(
Mandatory = $false,
HelpMessage = "CSV file delimiter"
)]
[string] $delimiter = ",",
[Parameter(
Mandatory = $false,
HelpMessage = "Find users on DisplayName, Email or UserPrincipalName"
)]
[ValidateSet("DisplayName", "Email", "UserPrincipalName")]
[string] $filter = "DisplayName"
)
Function Add-UsersToGroup {
<#
.SYNOPSIS
Get users from the requested DN
#>
process{
# Import the CSV File
$users = (Import-Csv -Path $path -Delimiter $delimiter -header "name").name
# Find the users in the Active Directory
$users | ForEach {
$user = Get-ADUser -filter "$filter -eq '$_'" | Select ObjectGUID
if ($user) {
Add-ADGroupMember -Identity $groupName -Members $user
Write-Host "$_ added to the group"
}else {
Write-Warning "$_ not found in the Active Directory"
}
}
}
}
Load the Active Directory Module
Import-Module -Name ActiveDirectory
Add user from CSV to given Group
Add-UsersToGroupЧтобы добавить пользователей, основываясь на их имени пользователя, в группу «SG_PowerBi» из CSV файла, вы можете выполнить следующую команду:
.\Add-UsersToGroup.ps1 -GroupName "SG_PowerBi" -Path c:\temp\users.csvЕсли вы хотите использовать UserPrincipalName, вам нужно установить параметр фильтра:
.\Add-UsersToGroup.ps1 -GroupName "SG_PowerBi" -Path c:\temp\users.csv -Filter "UserPrincipalName"Скрипт выдаст предупреждение, если не сможет найти пользователя в Active Directory. И он перечислит всех пользователей, которых он добавил в группу.
Скрипт не проверяет, является ли пользователь уже членом группы; это уже делает команда Add-ADGroupMember. Вы можете добавить параметр -DisablePermissiveModify к команде на Windows Server 2019, чтобы выбросить ошибку, если пользователь уже существует.
Добавление пользователей в разные группы из CSV
Я также создал вариант скрипта, который позволяет массово добавлять пользователей в разные группы. Таким образом, вы можете создать CSV-файл, в котором в одном столбце будут пользователи, а в другом — группа, в которую вы хотите их добавить.
Этому CSV-файлу нужны названия столбцов, поэтому первый столбец должен быть подписан как Пользователь, а второй столбец Группа.
User,Group
Bob Davis,SG_PowerBi
Erik Parker,SG_Visio
Jean Miles,SG_Visio
Kelly Rices,SG_PowerBi
Margie Baker,SG_PowerBi
Mathew Scott,SG_Visio
Owen Hopkins,SG_PowerBiНа этот раз нам не нужно указывать группу, только путь к файлу CSV, по желанию - разделитель и фильтр.
.\Add-UsersToDiffGroup.ps1 -path c:\temp\users.csv -filter "DisplayName"Вы можете скопировать полный скрипт ниже или скачать его здесь на моей странице Github.
[CmdletBinding()]
param (
[Parameter(
Mandatory = $true,
HelpMessage = "Path to CSV file"
)]
[string] $Path = "",
[Parameter(
Mandatory = $false,
HelpMessage = "CSV file delimiter"
)]
[string] $Delimiter = ",",
[Parameter(
Mandatory = $false,
HelpMessage = "Find users on DisplayName, Email or UserPrincipalName"
)]
[ValidateSet("DisplayName", "Email", "UserPrincipalName")]
[string] $Filter = "DisplayName"
)
Function Add-UserToGroup {
<#
.SYNOPSIS
Get users from the requested DN
#>
process{
# Import the CSV File
$users = Import-Csv -Path $path -Delimiter $delimiter
# Find the users in the Active Directory
$users | ForEach {
$user = Get-ADUser -filter "$filter -eq '$($_.user)'" | Select ObjectGUID
if ($user) {
Add-ADGroupMember -Identity $_.Group -Members $user
Write-Host "$($_.user) added to $($_.Group)"
}else {
Write-Warning "$($_.user) not found in the Active Directory"
}
}
}
}
Load the Active Directory Module
Import-Module -Name ActiveDirectory
Add user from CSV to given Group
Add-UserToGroupЗаключение
Используя PowerShell, мы можем быстро добавить пользователя в группу. Если вы не знаете SAMAccountName пользователя, вы всегда можете найти его с помощью команды Get-AdUser. Если вы новичок в использовании скриптов PowerShell, убедитесь, что вы также прочитали эту статью.
Надеюсь, вы нашли эту статью полезной. Если у вас есть вопросы, просто оставьте комментарий ниже.


