Поиск по сайту:

Как добавить пользователя в группу в 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

PowerShell добавить пользователя в группу

Добавление нескольких пользователей в группу

Добавление одного пользователя в группу также можно выполнить с помощью консоли 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, убедитесь, что вы также прочитали эту статью.

Надеюсь, вы нашли эту статью полезной. Если у вас есть вопросы, просто оставьте комментарий ниже.