Gerenciando Grupos AD com Get-ADGroup e Mais

Usando o módulo ActiveDirectory PowerShell, 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 para grupos no Active Directory, com uma tonelada de exemplos para referência.

Cmdlets de Grupo no Active Directory

Uma vez que instala o módulo ActiveDirectory PowerShell, 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 PowerShell kung-fu, você pode gerenciar todos os aspectos do grupo no 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 de um usuário específico usando o cmdlet Get-Aduser. Para uma revisão sobre como criar filtros, confira Aprendendo Filtros de Diretório e LDAP no Active Directory com 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. Encaminhe os resultados de Get-ADGroupMember para Get-ADUser porque estes são objetos ADPrincipal que não têm todas as propriedades que os objetos ADUser possuem.

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 de 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 Users. O escopo do grupo deve ser DomainLocal, 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 GroupCategory de Distribution.

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 Identity.

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

Este comando especifica o principal do AD como o Identity.

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

Escreva na propriedade Notas de um grupo com Set-AdGroup

O campo rotulado Notas 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 uma linha 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 número 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á filtro de 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 PowerShell ou um filtro 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 designar alguém responsável pela associação do grupo. Isso não significa automaticamente que o gerente pode alterar a associação do grupo. Para que isso seja possível, as permissões de segurança precisam ser alteradas na propriedade Membro do grupo em questão.

Ao marcar a caixa O gerente pode atualizar a lista de associações para um grupo no Active Directory Users and Computers (ADUC), as permissões são alteradas 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>'

A atualização da lista de controle de acesso requer algumas etapas adicionais. O trecho de código a seguir concede à usuária Kristin Diaz a capacidade de gerenciar a associação do grupo. bf9679c0-0de6-11d0-a285-00aa003049e2 é o GUID da 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 associação do grupo, mas não será mostrada como gerente no ADUC.

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 a grupos de segurança com esses 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 do Active Directory (distribuição), excluindo grupos de segurança usando esses dois exemplos.

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

Encontre a associaçã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 UO, sem incluir sub-UOs

Seja específico usando o parâmetro SearchBase para limitar sua pesquisa a uma única UO com esses 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 UO, incluindo todas as sub-UOs

Você precisa encontrar todos os grupos em UOs 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 orientada por exemplos de gerenciamento de grupos do AD com o PowerShell. Pegue alguns desses, experimente em sua organização e comece a automatizar!

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