Gerenciando Grupos AD com Get-ADGroup e Mais

Usando o módulo PowerShell do ActiveDirectory, você pode consultar grupos AD com Get-AdGroup, adicionar, atualizar e remover grupos e membros de grupos. Neste post do blog, você vai aprender um pouco sobre os cmdlets do PowerShell do grupo Active Directory com uma tonelada de exemplos para referência.

Cmdlets de Grupo do Active Directory

Assim que instalar o módulo PowerShell do ActiveDirectory, você encontrará alguns cmdlets disponíveis para gerenciar grupos.

Cmdlet Name Description
Add-ADGroupMember Used to add members to an AD group.
Add-ADPrincipalGroupMembership Used to add an AD principal to AD groups.
Get-ADGroup Used to return a group or groups from AD.
Get-ADGroupMember Used to return the members of an AD group.
Get-ADPrincipalGroupMembership Used to get the groups an AD principal is a member of.
New-ADGroup Used to create a new AD group.
Remove-ADGroup Used to delete an AD group.
Remove-ADGroupMember Used to remove members from an AD group.
Remove-ADPrincipalGroupMembership Used to remove an AD principal from AD groups.
Set-ADGroup Used to set the properties of an AD group.

Usando esses cmdlets e um pouco de kung-fu do PowerShell, você pode gerenciar todos os aspectos do grupo Active Directory com PowerShell.

Encontre os membros de um grupo com Get-ADGroupMember

O cmdlet Get-AdGroupMember retorna todos os membros de um grupo.

PS51> Get-ADGroupMember -Identity <identity string or object>

Alternativamente, você pode fazer referência à propriedade memberOf em um usuário específico usando o cmdlet Get-Aduser. Para uma revisão sobre como construir filtros, confira Aprendendo Filtros de Diretório Ativo e LDAP no PowerShell.

Dois exemplos estão abaixo.

PS51> Get-ADUser -Filter 'memberOf -eq ""'
PS51> Get-ADUser -LDAPFilter '(memberOf=)'

Isso retorna uma coleção de objetos ADPrincipal.

Exporte os membros de um grupo para um arquivo CSV

Isso exporta o primeiro nome, sobrenome e endereço de e-mail de cada usuário. Passe os resultados de Get-ADGroupMember para Get-ADUser porque esses são objetos ADPrincipal que não possuem todas as propriedades que os objetos ADUser têm.

PS51> $GroupMembers = Get-ADGroupMember -Identity 'Professional Services Department'
PS51> $GroupMembers | Get-ADUser -Properties GivenName,Surname,Mail | Select-Object GivenName,Surname,Mail | Export-CSV -Path GroupMembers.CSV -NoTypeInformation

Observe o uso do parâmetro NoTypeInformation do Export-CSV para garantir que o arquivo CSV seja compatível com outras aplicações.

Encontre grupos sem membros com Get-ADGroup

Use Get-AdGroup para encontrar grupos usando filtros. Dois exemplos abaixo.

PS51> Get-ADGroup -Filter "Members -notlike '*'"
PS51> Get-ADGroup -LDAPFilter "(!(member=*))"

Crie um novo grupo de segurança com New-ADGroup

Você cria um novo grupo de segurança usando o comando New-AdGroup.

PS51> New-ADGroup -Name '<group name>' -GroupScope <scope of group> -Path '<path of the OU tht will host the new group>'

Se nenhum parâmetro Path for fornecido, o novo grupo será criado no contêiner de Usuários. O escopo do grupo deve ser Local do Domínio, Global ou Universal.

Crie um novo grupo de distribuição com New-ADGroup

Use New-AdGroup novamente para criar um grupo de distribuição. Desta vez, escolha uma Categoria de Grupo de Distribuição.

PS51> New-ADGroup -Name '<group name>' -GroupScope <scope of group>  -GroupCategory Distribution -Path '<path of the OU tht will host the new group>'

Adicione membros a um grupo com Add-ADGroupMember

Adicionar usuários a um grupo do Active Directory com PowerShell pode ser feito usando o cmdlet Add-AdGroupMember ou o cmdlet Add-ADPrincipalGroupMembership.

Este comando especifica o grupo como o Identidade.

PS51> Add-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)>

Este comando especifica o principal do AD como o Identidade.

PS51> Add-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)>

Escreva para a propriedade Notes de um grupo com Set-AdGroup

O campo rotulado Notes no ADUC é representado pela propriedade Info retornada de Get-AdGroup.

Primeiro, encontre o grupo a ser alterado, defina a propriedade Info e depois use Set-AdGroup para aplicar a alteração no AD.

PS51> $group = Get-ADGroup -Identity <identity string or object>
PS51> $group.Info = 'Important notes on this group'
PS51> Set-ADGroup $group

Remova membros do grupo com Remove-ADGroupMember

Como todos os cmdlets do PowerShell, você pode usar o parâmetro Confirm para ser solicitado antes que uma alteração seja feita. Esse comportamento também se aplica aos cmdlets Remove-AdGroupMember e Remove-ADPrincipalGroupMembership.

Abaixo, você pode remover membros do grupo sem confirmação.

PS51> Remove-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)>
PS51> Remove-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)>

Ou você pode optar por remover membros do grupo com confirmação usando o parâmetro Confirm.

PS51> Remove-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)> -Confirm
PS51> Remove-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)> -Confirm

Exclua um grupo com Remove-ADGroup

Exclua um grupo sem confirmação e com confirmação.

PS51> Remove-ADGroup -Identity <identity string or object>
PS51> Remove-ADGroup -Identity <identity string or object> -Confirm

Renomeie um grupo com Rename-ADObject

Você pode renomear um grupo com um comando usando Rename-ADObject.

PS51> Rename-ADObject -Identity <identity string or object> -NewName '<new name>'

Obtenha o número de grupos com Get-ADGroup

Você precisa encontrar o total de grupos retornados via Get-AdGroup? Use a propriedade Count.

PS51> (Get-ADGroup -Filter '*').Count

Encontre grupos com um gerente com Get-ADGroup

Filtre todos os grupos que têm um gerente atribuído a eles com Get-AdGroup e um filtro LDAP bem elaborado.

PS51> Get-ADGroup -LDAPFilter '(managedby=*)'

Não há um filtro PowerShell equivalente para isso.

Encontre grupos gerenciados por um usuário específico com Get-ADGroup

Aprimore suas habilidades de filtro e encontre todos os grupos gerenciados por um usuário específico usando um filtro do PowerShell ou LDAP.

PS51> Get-ADGroup -Filter 'managedby -eq "<distinguished name of user>"'
PS51> Get-ADGroup -LDAPFilter '(managedby=<distinguished name of user>)'

Defina o gerente do grupo com Set-ADGroup

A guia Gerenciado por no ADUC para grupos permite que você designe alguém responsável pela adesão ao grupo. Isso não significa automaticamente que o gerente pode alterar a adesão ao grupo. Para que isso seja possível, as permissões de segurança precisam ser alteradas na propriedade Membro do grupo em questão.

A ação de marcar a caixa O gerente pode atualizar a lista de membros para um grupo no Active Directory Users and Computers (ADUC) altera as permissões para permitir isso.

Managed By tab in Active Directory Users and Computers

Use Set-ADGroup para definir o atributo GerenciadoPor:

PS51> Set-ADGroup -ManagedBy '<distinguished name, GUID, SID or SAM Account name of manager>'

Atualizar a lista de controle de acesso requer alguns passos adicionais. O trecho de código a seguir concede à usuária Kristin Diaz a capacidade de gerenciar a adesão ao grupo. bf9679c0-0de6-11d0-a285-00aa003049e2 é o GUID para a propriedade Membro do grupo.

Se Kristin também for definida como gerente do grupo, a caixa de seleção será marcada. Caso contrário, Kristin ainda poderá gerenciar a adesão ao grupo, mas não será mostrada no ADUC como gerente.

Encontre senhas vazadas e inseguras em seu Active Directory verificando a lista de senhas do NCSC.

$group = Get-ADGroup -Identity 'Professional Services Department'
$manager = Get-ADUser -Identity 'Kristin.Diaz'
$NTPrincipal = New-Object System.Security.Principal.NTAccount $manager.samAccountName
$objectGUID = New-Object GUID 'bf9679c0-0de6-11d0-a285-00aa003049e2'
$acl = Get-ACL "AD:$($group.distinguishedName)"
$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $NTPrincipal,'WriteProperty','Allow',$objectGUID
$acl.AddAccessRule($ace)
Set-ACL -AclObject $acl -Path "AD:$($group.distinguishedName)"

Encontre todos os grupos de segurança

Liste todos os grupos de segurança no Active Directory com o PowerShell, limitando sua consulta apenas aos grupos de segurança com estes dois exemplos. Qual é o filtro LDAP, você pergunta? Aprenda tudo sobre filtros LDAP.

PS51> Get-ADGroup -Filter 'groupcategory -eq "Security"'
PS51> Get-ADGroup -LDAPFilter '(groupType:1.2.840.113556.1.4.803:=2147483648)'

Encontre grupos de distribuição

Use o PowerShell para listar Grupos de Diretório Ativo (distribuição), excluindo grupos de segurança com estes dois exemplos.

PS51> Get-ADGroup -Filter 'groupcategory -eq "Distribution"'
PS51> Get-ADGroup -LDAPFilter '(!(groupType:1.2.840.113556.1.4.803:=2147483648))'

Encontre a filiação de grupo para um usuário com Get-ADPrincipalGroupMembership

PS51> Get-ADPrincipalGroupMembership -Identity <identity string or object>

Observe que este comando requer acesso a um catálogo global.

Encontre grupos em uma Unidade Organizacional (OU), sem incluir sub-OUs

Seja granular usando o parâmetro SearchBase para limitar sua pesquisa a uma única OU com estes dois exemplos.

PS51> Get-ADGroup -Filter '*' -SearchBase '<distinguished name of OU>' -SearchScope OneLevel
PS51> Get-ADGroup -LDAPFilter '(CN=*)' -SearchBase '<distinguished name of OU>' -SearchScope OneLevel

Encontre grupos em uma Unidade Organizacional (OU), incluindo sub-OUs

Precisa encontrar todos os grupos em OUs filhas? Use um SearchScope de SubTree.

PS51> Get-ADGroup -Filter '*' -SearchBase '<distinguished name of OU>' -SearchScope SubTree
PS51> Get-ADGroup -LDAPFilter '(CN=*)' -SearchBase '<distinguished name of OU>' -SearchScope SubTree

Resumo

Isso conclui nossa demonstração prática de gerenciamento de grupos AD com o PowerShell. Pegue alguns desses exemplos, experimente em sua organização e comece a automatizar!

Source:
https://adamtheautomator.com/get-adgroup/