Gestione dei gruppi AD con Get-ADGroup e altro

Utilizzando il modulo PowerShell ActiveDirectory, è possibile interrogare i gruppi AD con Get-AdGroup, aggiungere, aggiornare e rimuovere gruppi e membri del gruppo. In questo post del blog, imparerai un po’ sui cmdlet PowerShell del gruppo Active Directory con un sacco di esempi di riferimento.

Cmdlet del gruppo Active Directory

Una volta installato il modulo PowerShell ActiveDirectory, troverai alcuni cmdlet disponibili per gestire i gruppi.

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.

Utilizzando questi cmdlet e un po’ di kung-fu PowerShell, puoi gestire ogni aspetto del gruppo Active Directory con PowerShell.

Trova i membri di un gruppo con Get-ADGroupMember

Il cmdlet Get-AdGroupMember restituisce tutti i membri di un gruppo.

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

In alternativa, potresti fare riferimento alla proprietà memberOf su un utente specifico utilizzando il cmdlet Get-Aduser. Per un ripasso su come creare filtri, dai un’occhiata a Learning Active Directory Directory and LDAP Filters in PowerShell.

Ecco due esempi.

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

Ciò restituisce una raccolta di oggetti ADPrincipal.

Esporta i membri di un gruppo in un file CSV.

Esporta il nome, il cognome e l’indirizzo email di ciascun utente. Inoltra i risultati di Get-ADGroupMember a Get-ADUser perché questi sono oggetti ADPrincipal che non hanno tutte le proprietà degli oggetti ADUser.

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

Nota l’uso del parametro NoTypeInformation di Export-CSV per assicurarsi che il file CSV sia compatibile con altre applicazioni.

Trova gruppi senza membri con Get-ADGroup

Usa Get-AdGroup per trovare gruppi utilizzando filtri. Di seguito sono riportati due esempi.

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

Crea un nuovo gruppo di sicurezza con New-ADGroup

Puoi creare un nuovo gruppo di sicurezza utilizzando il 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 non viene fornito il parametro Path, il nuovo gruppo verrà creato nel contenitore Utenti. Lo scopo del gruppo deve essere DomainLocal, Global o Universal.

Crea un nuovo gruppo di distribuzione con New-ADGroup

Usa nuovamente New-AdGroup per creare un gruppo di distribuzione. Questa volta, scegli una GroupCategory di Distribution.

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

Aggiungi membri a un gruppo con Add-ADGroupMember

Puoi aggiungere utenti a un gruppo di Active Directory utilizzando il cmdlet Add-AdGroupMember o il cmdlet Add-ADPrincipalGroupMembership.

Questo comando specifica il gruppo come Identity.

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

Questo comando specifica il principale AD come Identity.

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

Scrivi alla proprietà Note di un gruppo con Set-ADGroup

Il campo denominato Note in ADUC è rappresentato dalla proprietà Info restituita da Get-AdGroup.

Innanzitutto, trova il gruppo da modificare, imposta la proprietà Info e quindi utilizza Set-AdGroup per applicare la modifica ad AD.

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

Rimuovi i membri del gruppo con Remove-ADGroupMember

Come tutti i cmdlet di PowerShell, è possibile utilizzare il parametro Confirm per essere avvisati prima di apportare una modifica. Questo comportamento si applica anche ai cmdlet Remove-AdGroupMember e Remove-ADPrincipalGroupMembership.

In seguito puoi rimuovere i membri del gruppo senza conferma.

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)>

O puoi scegliere di rimuovere i membri del gruppo con conferma utilizzando il parametro 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

Elimina un gruppo con Remove-ADGroup

Elimina un gruppo senza conferma e con conferma.

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

Rinomina un gruppo con Rename-ADObject

È possibile rinominare un gruppo tramite una riga di comando utilizzando Rename-ADObject.

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

Ottieni il numero di gruppi con Get-ADGroup

Hai bisogno di trovare il numero totale di gruppi restituiti da Get-AdGroup? Utilizza la proprietà Count.

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

Trova gruppi con un responsabile utilizzando Get-ADGroup

Filtra tutti i gruppi che hanno un responsabile assegnato utilizzando Get-AdGroup e un ben strutturato filtro LDAP.

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

Non esiste un filtro equivalente in PowerShell per questo.

Trova i gruppi gestiti da un utente specifico con Get-ADGroup

Migliora le tue abilità di filtro e trova tutti i gruppi gestiti da un utente specifico utilizzando un filtro PowerShell o un filtro LDAP.

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

Imposta il responsabile del gruppo con Set-ADGroup

La scheda Gestito da in ADUC per i gruppi consente di designare una persona responsabile dell’appartenenza al gruppo. Questo non significa automaticamente che il responsabile possa modificare l’appartenenza al gruppo. Per rendere ciò possibile, è necessario modificare i permessi di sicurezza sulla proprietà Membro del gruppo in questione.

Selezionando la casella Il responsabile può aggiornare l’elenco dei membri per un gruppo in Active Directory Users and Computers (ADUC), vengono modificate le autorizzazioni per consentirlo.

Managed By tab in Active Directory Users and Computers

Utilizza il comando Set-ADGroup per impostare l’attributo GestitoDa:

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

L’aggiornamento della lista di controllo degli accessi richiede alcuni passaggi aggiuntivi. Il seguente frammento di codice concede all’utente Kristin Diaz la possibilità di gestire l’appartenenza al gruppo. bf9679c0-0de6-11d0-a285-00aa003049e2 è il GUID per la proprietà Membro del gruppo.

Se Kristin è anche impostata come responsabile del gruppo, la casella di selezione sarà spuntata. In caso contrario, Kristin sarà comunque in grado di gestire l’appartenenza al gruppo, ma non verrà mostrata come responsabile in ADUC.

Trova password trapelate e non sicure nel tuo Active Directory controllando la lista delle password 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)"

Trova tutti i gruppi di sicurezza

Elencare tutti i gruppi di sicurezza nell’Active Directory con PowerShell limitando la ricerca solo ai gruppi di sicurezza con questi due esempi. Qual è quel filtro LDAP, chiedi? Scopri tutto sui filtri LDAP.

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

Trova i gruppi di distribuzione

Utilizza PowerShell per elencare i gruppi di Active Directory (distribuzione) che escludono i gruppi di sicurezza con questi due esempi.

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

Trova l’appartenenza a un gruppo per un utente con Get-ADPrincipalGroupMembership

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

Nota che questo comando richiede accesso a un catalogo globale.

Trova gruppi in una OU, escludendo eventuali sub-OU

Diventa più dettagliato utilizzando il parametro SearchBase per limitare la ricerca a una singola OU con questi due esempi.

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

Trova gruppi in una OU, inclusi eventuali sub-OU

Hai bisogno di trovare tutti i gruppi nelle sotto-OU? Utilizza un SearchScope di SubTree.

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

Sommario

Questo conclude la nostra dimostrazione basata su esempi sulla gestione dei gruppi AD con PowerShell. Prendine alcuni, provali nella tua organizzazione e inizia ad automatizzare!

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