Visualizzazione post con etichetta gruppi. Mostra tutti i post
Visualizzazione post con etichetta gruppi. Mostra tutti i post

giovedì 21 settembre 2023

Windows Server 2022: Creazione gruppi in Active Directory

Lo scopo principale della creazione di gruppi in Active Directory è quello raccogliere e organizzare account utenti, account computer e altri gruppi in unità gestibili. Lavorare con i gruppi invece che con i singoli account semplifica notevolmente la manutenzione e la gestione della rete: gli amministratori devono assegnare le autorizzazioni/permessi una sola volta al gruppo anziché più volte a ogni singolo utente. Ogni account aggiunto a un gruppo riceverà automaticamente i diritti/autorizzazioni assegnati al gruppo in Active Directory.



Tipi di gruppo

In Active Directory esistono due tipi di gruppi: Distribuzione e Sicurezza.

Gruppi di Distribuzione
gruppi di Distribuzione vengono usati per la creazione di liste di distribuzione di posta elettronica. Possono essere utilizzati solo con le applicazioni di posta elettronica, come ad es. MS Exchange Server, per inviare email ad un gruppo di utenti. I gruppi di Distribuzione, non essendo abilitati per la sicurezza, non possono essere elencati all'interno delle liste di controllo di accesso discrezionale (discretionary access control list o DACL).


Gruppi di Sicurezza
gruppi di Sicurezza vengono utilizzati per assegnare permessi agli utenti e/o per assegnare autorizzazioni sulle risorse condivise. I gruppi di Sicurezza sono elencati negli elenchi DACL che definiscono le autorizzazioni per risorse e oggetti.
Come per i gruppi di Distribuzione, anche i gruppi di Sicurezza possono essere usati come entità di posta elettronica. Inviando un messaggio di posta elettronica al gruppo questo verrà inviato a tutti i membri del gruppo.
In Active Directory sono già presenti dei gruppi di Sicurezza, ad es.  il gruppo Backup Operators. Un account utente aggiunto al gruppo Backup Operators sarà in grado di eseguire il backup e il ripristino di file/directory presenti sui Domain Controller.




Ambito di gruppo

I gruppi sono caratterizzati da un ambito che determina dove il gruppo può essere applicato all'interno della foresta o dominio. L'ambito di applicazione determina anche chi può essere membro di un gruppo. Microsoft non ha inserito molte limitazioni in Active Directory riguardo a come i gruppi possono essere annidati (nesting) tuttavia bisogna prestare molta attenzione nell'eseguire tale operazione. L'unico aiuto offerto in Active Directory per evitare potenziali rischi dovuti al nesting di gruppi di sicurezza è quello dell'ambito di gruppo.
All'interno di Active Directory è possibile trovare tre ambiti di gruppo: GlobaleLocale al DominioUniversale.

Globale
I gruppi con ambito globale vengono utilizzati per gestire gli account utente e gli account computer e possono includere altri gruppi con ambito globale appartenenti allo stesso dominio. Dato che non vengono replicati all'esterno del dominio di appartenenza, gli account di un gruppo con ambito globale possono essere modificati senza che questo crei traffico di replica verso il catalogo globale (global catalog). 
Possiamo pensare ai gruppi con ambito globale come a "gruppi di account" che includono utenti con uno o più punti in comune. Ad esempio, consideriamo il reparto Marketing di una società. Tutti gli utenti di tale reparto potranno essere inseriti all'interno di un gruppo globale chiamato "GRP_Marketing"

Locale al dominio (Domain Local)
Grazie alla loro flessibilità relativa alle restrizioni, i gruppi Locali al dominio sono ideali per definire e gestire l'accesso alle risorse all'interno del singolo dominio. In particolare, questi gruppi vengono utilizzati perché ad essi possono essere aggiunti gruppi del dominio principale, nonché gruppi di altri domini e foreste trusted. Generalmente vengono utilizzati per l'accesso diretto a specifiche risorse non archiviate in Active Directory come condivisioni su file server, code di stampa, ecc. E' sconsigliato utilizzare tale ambito per l'assegnazione di autorizzazioni sugli oggetti di Active Directory.
Se i gruppi di ambito globale possono essere considerati come "gruppi di account" allora possiamo considerare i gruppi di ambito locale come "gruppi di risorse". 
Supponiamo che agli utenti del gruppo GRP_Marketing dobbiamo concedere l'accesso ad una condivisione di file chiamata DocumentiMarketing (gruppo GRP_DocumentiMarketing). Annidando il gruppo globale "GRP_Marketing" all'interno del gruppo locale al dominio "GRP_DocumentiMarketing", abbiamo appena dato a tutti gli utenti del dipartimento di marketing l'accesso ai contenuti della condivisione. 


Universale
I gruppi universali sono utilizzati solo in ambienti multi-dominio. I gruppi con ambito universale sono disponibili solo in domini con modalità nativa e le appartenenze vengono memorizzate all'interno del catalogo globale. Proprio per questo motivo è sconsigliabile modificare frequentemente l'appartenenza di un gruppo con ambito universale in quanto ogni modifica apportata verrà replicata sull'intera foresta
Supponiamo di avere una rete con 2 domini USA e EUROPE e un global group GRP_Marketing in ciascun dominio; è possibile creare un universal group UGRP_Marketing che racchiuda i gruppi USA\GRP_Marketing e EUROPE\GRP_Marketing. Il gruppo universale UGRP_Marketing potrà essere utilizzato ovunque all'interno dell'infrastruttura.  



Nella seguente tabella, prelevata dalla documentazione Microsoft, vengono riportati gli ambiti di raggruppamento


AmbitoMembri possibiliConversione ambitiPuò concedere autorizzazioniPossibile membro di
Universale
Account da qualsiasi dominio della stessa foresta

Gruppi globali di qualsiasi dominio della stessa foresta

Altri gruppi universali di qualsiasi dominio della stessa foresta

Può essere convertito nell'ambito locale di dominio

Può essere convertito in ambito globale se il gruppo non è un membro di altri gruppi universali
In qualsiasi dominio della stessa foresta o delle foreste trusting
Altri gruppi universali della stessa foresta

Gruppi locali di dominio nella stessa foresta o nelle foreste trusting

Gruppi locali nei computer della stessa foresta o delle foreste trusting

Globale
Account dello stesso dominio

Altri gruppi globali dello stesso dominio
Può essere convertito in ambito universale se il gruppo non è membro di un altro gruppo globale
In qualsiasi dominio della stessa foresta o Trusted Domains o forests
Gruppi universali da qualsiasi dominio della stessa foresta

Altri gruppi globali dello stesso dominio

Gruppi locali di dominio da qualsiasi dominio della stessa foresta o da qualsiasi dominio di trusting
Dominio Locale
Account da qualsiasi dominio o da qualsiasi dominio attendibile

Gruppi globali da qualsiasi dominio o da qualsiasi dominio attendibile

Gruppi universali da qualsiasi dominio della stessa foresta

Altri gruppi locali di dominio dello stesso dominio

Account, gruppi globali e gruppi universali da altri insiemi di foreste e da domini esterni
Può essere convertito in ambito universale se il gruppo non contiene altri gruppi locali di dominio
All'interno dello stesso dominio
Altri gruppi locali di dominio dello stesso dominio

Gruppi locali nei computer dello stesso dominio, esclusi i gruppi incorporati con SID noti

Una struttura AD ben progettata prevede che agli utenti vengano forniti solo i permessi/abilitazioni strettamente necessari per l'accesso alle informazioni e alle risorse essenziali per lo svolgimento del proprio lavoro. I modelli di sicurezza basati su ruoli, attributi e risorse sono tutti modi diversi che le organizzazioni utilizzano per raggiungere tale obiettivo in tutta l'infrastruttura IT e i tipi e l'ambito dei gruppi ricoprono un ruolo fondamentale. I modelli strutturali di best practice suggeriti da Microsoft per l'architettura Active Directory sono due: AGDLP e AGUDLP.
  • AGDLP (AccountsGlobalDomain LocalPermissions) fornisce una guida su come aggiungere i gruppi all'interno degli altri senza compromettere la sicurezza o sacrificare l'efficienza operativa. Il modello prevede quanto segue: Gli account utente e computer dovrebbero essere membri di gruppi globali, che a loro volta possono essere membri di gruppi locali di dominio che descrivono i permessi delle risorse.
  • AGUDLP (AccountsGlobalUniversalDomain LocalPermissions), come intuibile dal nome, è molto simile a AGDLP ma la "U" introduce i gruppi in ambito Universale. Le appartenenze di tali gruppi sono memorizzate nel catalogo globale, che è più che altro una necessità in ambienti multi-dominio. L'uso di questo modello dipende in realtà da quanto si fa affidamento sul catalogo globale nell'organizzazione. Se c'è un interesse personale ad avere il catalogo globale il più completo possibile (ad es. nel caso in cui bisogna gestire molti dipendenti mobile e permettere loro di ricercarsi l'un l'altro facilmente tramite MS Outlook), allora il modello AGUDLP aiuterà a raggiungere lo scopo. Tuttavia, per gli ambienti più piccoli che hanno solo un singolo dominio questo modello può aggiungere un inutile livello di complessità.


La ragione per cui i modelli strutturali AGDLP e AGUDLP suggeriti da Microsoft sono la migliore soluzione da adottare, almeno nella gran parte dei casi, è duplice. Dal punto di vista della sicurezza, utilizzando gruppi locali di domini per concedere permessi a risorse specifiche, un amministratore può dare ai membri di altri domini e foreste l'accesso alla risorsa senza dover dare loro accesso diretto al resto del dominio in cui risiede la risorsa. In questo modo si evita di aggiungere utenti di altri domini e foreste al dominio in cui risiede la risorsa. Dal punto di vista operativo, i modelli AGDLP e AGUDLP facilitano anche la gestione dei membri del gruppo consentendo di gestire i permessi e l'organizzazione degli utenti separatamente.
I modelli strutturali suggeriti da Microsoft non sempre rappresentano la migliore soluzione. In infrastrutture molto grandi l'uso dei gruppi locali al dominio per la gestione dei permessi delle risorse può portare alla generazione di un numero molto elevato di gruppi e, di conseguenza, ciò potrebbe portare un utente a diventare membro di migliaia di gruppi.




Creare un gruppo tramite il Centro di amministrazione di Active Directory

  • Da Server Manager cliccare sul menu Strumenti e selezionare Centro di amministrazione di Active Directory. In alternativa premere la combinazione di tasti WIN+R, digitare dsac.exe e premere invio.
    Server Manager
    FIG 1 - Server Manager

  • Espandere il dominio mycompany.local quindi cliccare con il tasto destro sull'unità organizzativa Marketing e selezionare Nuovo->Raggruppa.

    Centro di amministrazione di Active Directory, Nuovo gruppo
    FIG 2 - Centro di amministrazione di Active Directory, Nuovo gruppo

  • Nella casella Nome gruppo inserire il nome da assegnare al gruppo (ad es. GRP_Marketing).
  • Come Tipo gruppo lasciare selezionato Sicurezza e come Ambito del gruppo lasciare attiva l'opzione Globale. Per proteggere il gruppo da eliminazioni accidentali, selezionare l'apposita casella (Proteggi da eliminazioni accidentali).

    Crea Raggruppa
    FIG 3 - Crea Raggruppa

  • Cliccare su OK per completare la creazione del gruppo.

    Gruppo GRP_Marketing
    FIG 4 - Gruppo GRP_Marketing




Creare un gruppo tramite Utenti e computer di Active Directory

  • Da Server Manager cliccare sul menu Strumenti e selezionare Utenti e Computer di Active Directory (Active Directory Users and Computers). In alternativa premere la combinazione di tasti WIN+R digitare dsa.msc e premere invio.
    Server Manager
    FIG 5 - Server Manager

  • Espandere il dominio mycompany.local quindi cliccare con il tasto destro sull'unità organizzativa Marketing e selezionare Nuovo->Gruppo.

    Utenti e computer di Active Directory, Nuovo gruppo
    FIG 6 - Utenti e computer di Active Directory, Nuovo gruppo

  • Nella casella Nome gruppo inserire il nome da assegnare al gruppo (ad es. GRP_Marketing), come Tipo gruppo lasciare selezionato Sicurezza e come Ambito del gruppo lasciare attiva l'opzione Globale.

    Nuovo oggetto gruppo
    FIG 7 - Nuovo oggetto gruppo

  • Cliccare su OK per la creazione del gruppo.

    Gruppo GRP_Marketing
    FIG 8 - Gruppo GRP_Marketing

  • Per proteggere il gruppo da eliminazioni accidentali, cliccarci su con il tasto destro del mouse e selezionare Proprietà. Nella scheda Oggetto selezionare la casella Proteggi oggetto da eliminazioni accidentali e cliccare su OK.
    Proteggi oggetto da eliminazioni accidentali
    FIG 9 - Proteggi oggetto da eliminazioni accidentali






Creare un gruppo tramite PowerShell

Per creare un gruppo in Active Directory tramite PowerShell è necessario utilizzare il cmdlet New-ADGroup

Sintassi
La sintassi del comando è la seguente

New-ADGroup
   [-WhatIf]
   [-Confirm]
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   [-Description <String>]
   [-DisplayName <String>]
   [-GroupCategory <ADGroupCategory>]
   [-GroupScope] <ADGroupScope>
   [-HomePage <String>]
   [-Instance <ADGroup>]
   [-ManagedBy <ADPrincipal>]
   [-Name] <String>
   [-OtherAttributes <Hashtable>]
   [-PassThru]
   [-Path <String>]
   [-SamAccountName <String>]
   [-Server <String>]

   [<CommonParameters>]

Parametri

-AuthType 
Specifica il metodo di autenticazione. I valori accettati dal parametro sono:
  • Negotiate oppure 0 (default)
  • Basic oppure 1

-Confirm
Se specificato, tale parametro mostra la richiesta di conferma prima di eseguire il cmdlet.

-Credential
Specifica un'account utente che ha i permessi necessari per eseguire l'operazione. Se omesso viene considerato l'utente corrente che sta eseguendo il comando. Al parametro può essere passato il nome dell'account, come ad es. "utente01" o "Dominio\utente01" oppure può essere passato un'oggetto PSCredential generato dal cmdlet Get-Credential. Se viene specificato un'account utente verrà richiesto di inserire la password all'esecuzione del comando.

-Description
Permette di specificare la descrizione dell'oggetto. 

-DisplayName
Specifica il display name dell'oggetto.

-GroupCategory
Con questo parametro si va a specificare il tipo di gruppo. I valori accettati sono:
  • Distribution oppure 0
  • Security oppure 1

-GroupScope
Il parametro specifica l'ambito del gruppo. I valori accettati sono:
  • DomainLocal o 0
  • Global o 1
  • Universal o 2

-HomePage
Permette di specificare l'URL della home page dell'oggetto.

-Instance
Specifica l'istanza di un oggetto di tipo gruppo da usare come template per la creazione di un nuovo gruppo.
E' possibile utilizzare un gruppo già esistente o costruirne uno nuovo utilizzando PowerShell.

Metodo 1: Utilizzare il cmdlet Get-ADGroup per recuperare un oggetto gruppo esistente per poi passarlo al parametro Instance del cmdlet New-ADGroup per creare un nuovo oggetto gruppo. È possibile sovrascrivere i valori delle proprietà del nuovo oggetto impostando i parametri appropriati.

Metodo 2: Creare un nuovo oggetto ADGroup e impostare i valori delle proprietà utilizzando l'interfaccia a riga di comando di PowerShell. Quindi passare questo oggetto al parametro Instance del cmdlet New-ADGroup per creare il nuovo oggetto gruppo.

-ManagedBy
Permette di specificare l'utente o il gruppo che gestisce l'oggetto. L'utente o il gruppo può essere indicato passando al parametro:
  • Distinguished name;
  • GUID (objectGUID)
  • Security identifier (objectSid)
  • SAM account name (sAMAccountName)

-Name
Il parametro permette di impostare il nome dell'oggetto.

-OtherAttributes
Specifica i valori degli attributi degli oggetti per gli attributi che non sono rappresentati dai parametri del cmdlet. 
Per specificare un singolo valore per un attributo
-OtherAttributes @{'AttributeLDAPDisplayName'=value}
Per specificare valori multipli per un attributo
-OtherAttributes @{'AttributeLDAPDisplayName'=value1,value2,...}
Per specificare valori per più attributi è necessario separare gli attributi da un punto e virgola
-OtherAttributes @{'Attribute1LDAPDisplayName'=value; 'Attribute2LDAPDisplayName'=value1,value2;...}

-PassThru
Restituisce un oggetto che rappresenta l'item su cui si sta lavorando. Per impostazione predefinita, il cmdlet non genera alcun output.

-Path
Specifica il path X.500 dell'unità organizzativa o del container dove verrà creato il nuovo oggetto.

-Server
Permette di specificare l'istanza di Active Directory Domain Services a cui connettersi per la creazione di un nuovo gruppo.

-WhatIf
Mostra cosa accadrebbe se venisse eseguito il cmdlet. Il cmdlet non viene eseguito.



Creare un gruppo in Active Directory tramite New-ADGroup
Per creare il gruppo GRP_Marketing all'interno della OU Marketing, avviare Windows PowerShell (amministratore) ed eseguire il comando
 New-ADGroup -GroupCategory:"Security" -GroupScope:"Global" -Name:"GRP_Marketing" -Path:"OU=Marketing,DC=mycompany,DC=local" -SamAccountName:"GRP_Marketing" -Server:"ServerDC2.mycompany.local"  


Creare un gruppo in Active Directory tramite PowerShell
FIG 10 - Creare un gruppo in Active Directory tramite PowerShell

Per proteggere il gruppo da eliminazioni accidentali, va eseguito il comando
 Set-ADObject -Identity:"CN=GRP_MArketing,OU=Marketing,DC=mycompany,DC=local" -ProtectedFromAccidentalDeletion:$true -Server:"ServerDC2.mycompany.local"  

Come già visto per gli account utente nell'articolo Windows Server 2022: Aggiungere account utente al dominio, per velocizzare la creazione di numerosi gruppi è possibile creare un file CSV con i valori dei parametri (FIG 11).
File CSV contenente l'elenco dei gruppi da creare
FIG 11 - File CSV contenente l'elenco dei gruppi da creare

Una volta creato il file sul server (nell'esempio al file è stato assegnato il nome GroupAD.csv e copiato in C:\) andremo ad eseguire il seguente comando in Windows PowerShell (amministratore) che aggiunge i gruppi elencati all'interno del file al dominio.
 Import-Csv -Path C:\GroupAD.csv | ForEach-Object {New-ADGroup -GroupCategory:$_.GroupCategory -GroupScope:$_.GroupScope -Name:$_.Name -Path:$_.Path -SamAccountName:$_.SamAccountName -Server:$_.Server}  

PowerShell, import del file CSV e creazione dei gruppi in AD
FIG 12 -  PowerShell, import del file CSV e creazione dei gruppi in AD


Il file CSV e il file di testo contenente il comando in PowerShell possono essere scaricati dal seguente link
DOWNLOAD





venerdì 15 aprile 2022

PowerShell: Visualizzare informazioni sugli account utente e i gruppi di cui sono membri

Il cmdlet Get-ADUser permette di ottenere informazioni su uno o più account utente presenti in Active Directory. Utilizzando il cmdlet Get-ADUser, è possibile ottenere il valore di qualsiasi attributo di un account utente AD, elencare gli utenti del dominio con le relative proprietà, esportare i report sugli utenti in file CSV e utilizzare vari criteri per selezionare e filtrare gli utenti del dominio. Come vedremo negli esempi, può essere utilizzato anche per individuare a quali gruppi di AD appartiene un account utente.

Sintassi

Get-ADUser
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -Filter <String>
   [-Properties <String[]>]
   [-ResultPageSize <Int32>]
   [-ResultSetSize <Int32>]
   [-SearchBase <String>]
   [-SearchScope <ADSearchScope>]
   [-Server <String>]
   [<CommonParameters>]


Get-ADUser
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   [-Identity] <ADUser>
   [-Partition <String>]
   [-Properties <String[]>]
   [-Server <String>]
   [<CommonParameters>]


Get-ADUser
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -LDAPFilter <String>
   [-Properties <String[]>]
   [-ResultPageSize <Int32>]
   [-ResultSetSize <Int32>]
   [-SearchBase <String>]
   [-SearchScope <ADSearchScope>]
   [-Server <String>]
   [<CommonParameters>]

Parametri

-AuthType 
Specifica il metodo di autenticazione. I valori accettati dal parametro sono:
  • Negotiate oppure 0 (default)
  • Basic oppure 1
-Credential
Specifica le credenziali dell'account utente con cui eseguire il comando. Se omesso viene considerato l'utente corrente che sta eseguendo il comando. Al parametro può essere passato il nome dell'account, come ad es. "utente01" o "Dominio\utente01" oppure può essere passato un'oggetto PSCredential generato dal cmdlet Get-Credential. Se viene specificato un'account utente verrà richiesto di inserire la password all'esecuzione del comando.

-Filter
Specifica una stringa di query che recupera gli oggetti di Active Directory. Questa stringa usa la sintassi del linguaggio delle espressioni di PowerShell (PowerShell Expression Language syntax) che fornisce un ricco supporto alla conversione di tipo per i tipi di valore ricevuti dal parametro Filter.

-Identity
Tale parametro specifica l'oggetto gruppo Active Directory su cui si desidera intervenire. Al parametro può essere passato un qualsiasi valore che identifica il gruppo in maniera univoca come:
Distinguished name
GUID (objectGUID)
Security identifier (objectSid)
Security Account Manager account name (SAMAccountName) 

-LDAPFilter
Specifica una query LDAP che viene utilizzata per filtrare gli oggetti Active Directory. 

-Partition
A tale parametro va passato il Distinguished Name (DN) di una partizione di Active Directory. Il cmdlet utilizzerà tale partizione per ricercare l'oggetto specificato dal parametro Identity.

-Properties
Specifica le proprietà dell'oggetto da recuperare. Può essere usato per recuperare le proprietà che non sono incluse nel set di default.

-ResultPageSize
Specifica il numero di oggetti da includere in una pagina per una query AD DS (Active Directory Domain Services).

-ResultSetSize
Specifica il numero massimo di oggetti da restituire per la query AD DS (Active Directory Domain Services).

-SearchBase
Specifica un percorso Active Directory all'interno del quale effettuare la ricerca.

-SearchScope
Specifica l'ambito di una ricerca Active Directory. I valori accettabili per questo parametro sono:
  • Base o 0
  • OneLevel 1
  • SubTree o 2
-Server
Permette di specificare l'istanza di Active Directory Domain Services a cui connettersi per eseguire l'operazione.


Esempi

Esempio 1
Get-ADUser -Identity Giovanni.Lubrano -Properties *
Visualizza tutte le proprietà dell'account specificato.
Proprietà account utente
FIG 1 - Proprietà account utente

Esempio 2
Get-ADUser -LDAPFilter '(!userAccountControl:1.2.840.113556.1.4.803:=2)'
Visualizza tutti gli account utente abilitati in Active Directory utilizzando un filtro LDAP.
Utenti attivi
FIG 2 - Utenti attivi

Esempio 3
Get-ADUser -Filter {Enabled -eq “False”}
Visualizza tutti gli account utente in AD non attivi.
Account utente disabilitati
FIG 3 - Account utente disabilitati

Esempio 4
Get-ADUser Giovanni.Lubrano -Property MemberOf | Select -ExpandProperty MemberOf
Visualizza i gruppi di Active Directory di cui l'utente specificato è membro.
Gruppi AD di cui l'account è membro
FIG 4 - Gruppi AD di cui l'account è membro

Esempio 5
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires
Per ogni account utente visualizza lo stato e la data dell'ultima modifica della password e l'ora dell'ultimo accesso al dominio (attributo LastLogonTimestamp). 
Informazioni sulla password account utente
FIG 5 - Informazioni sulla password account utente

Esempio 6
Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table
Visualizza tutti gli account utente abilitati e dotati di indirizzo email.

Esempio 7
Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -eq $null
Restituisce tutti gli account utente che non dispongono di indirizzo email.

Esempio 8
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where {$_.name –like "*Giovanni*"} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\temp\Info-user-passwords.csv -Append -Encoding UTF8
Restituisce gli attributi Name, PasswordExpired, PasswordLastSet e PasswordNeverExpires di tutti gli account utente in cui nel nome è presente la stringa Giovanni. I risultati sono ordinati per la data di ultima modifica della password (PasswordLastSet) ed esportati nel file .CSV specificato.









sabato 27 febbraio 2021

PowerShell: Rimuovere un membro da un gruppo Active Directory

Il cmdlet per rimuovere un membro da un gruppo Active Directory è Remove-ADGroupMember.

Sintassi

Remove-ADGroupMember
      [-WhatIf]
      [-Confirm]
      [-AuthType <ADAuthType>]
      [-Credential <PSCredential>]
      [-Identity] <ADGroup>
      [-Members] <ADPrincipal[]>
      [-Partition <String>]
      [-PassThru]
      [-Server <String>]
      [-DisablePermissiveModify]
      [<CommonParameters>]

Parametri

-AuthType 
Specifica il metodo di autenticazione. I valori accettati dal parametro sono:
  • Negotiate oppure 0 (default)
  • Basic oppure 1
-Confirm
Se specificato, tale parametro mostra la richiesta di conferma prima di eseguire il cmdlet.

-Credential
Specifica le credenziali dell'account utente con cui eseguire il comando. Se omesso viene considerato l'utente corrente che sta eseguendo il comando. Al parametro può essere passato il nome dell'account, come ad es. "utente01" o "Dominio\utente01" oppure può essere passato un'oggetto PSCredential generato dal cmdlet Get-Credential. Se viene specificato un'account utente verrà richiesto di inserire la password all'esecuzione del comando.

-DisablePermissiveModify
Gli aggiornamenti dei membri del gruppo utilizzano una modifica permissiva per impostazione predefinita e il messaggio di errore quando si tenta di rimuovere un account non presente viene soppresso. Specificando tale parametro il messaggio di errore verrà visualizzato.

-Identity
Tale parametro specifica l'oggetto gruppo Active Directory su cui si desidera intervenire. Al parametro può essere passato un qualsiasi valore che identifica il gruppo in maniera univoca come:
Distinguished name
GUID (objectGUID)
Security identifier (objectSid)
Security Account Manager account name (sAMAccountName) 

-Members
Permette di specificare un array di utenti, gruppi e computer separati da virgola da rimuovere dal gruppo. Il parametro accetta come valori:
Distinguished name
GUID (objectGUID)
Security identifier (objectSid)
SAM account name (sAMAccountName)

-Partition
A tale parametro va passato il Distinguished Name (DN) di una partizione di Active Directory. Il cmdlet utilizzerà tale partizione per ricercare l'oggetto specificato dal parametro Identity.

-PassThru
Restituisce un oggetto che rappresenta l'item su cui si sta lavorando. Per impostazione predefinita, il cmdlet non genera alcun output.

-Server
Permette di specificare l'istanza di Active Directory Domain Services a cui connettersi per eseguire l'operazione.

-WhatIf
Mostra cosa accadrebbe se venisse eseguito il cmdlet. Il cmdlet non viene eseguito.


Rimuovere un membro da un gruppo Active Directory
Per rimuovere un membro da un gruppo Active Directory il comando sarà analogo al seguente
Remove-ADGroupMember -Identity Gruppo1 -Members Giovanni.Lubrano
dove con il parametro -Indentity si va ad indicare il gruppo sul quale agire e con -Members indichiamo l'account o più account separati da virgola da rimuovere.
PowerShell, Remove-AdGroupMember
FIG 1 - PowerShell, Remove-AdGroupMember

E' possibile creare un file CSV contenente l'elenco di tutti gli account da rimuovere dal gruppo Active Directory come quello in FIG 2.
File CSV con l'elenco degli account
FIG 2 - File CSV con l'elenco degli account

Il comando da eseguire per rimuovere dal gruppo specificato (Gruppo1) l'elenco degli account presenti nel file CSV (FileUtenti.csv) sarà simile a
Import-CSV C:\FileUtenti.csv -Header utenti | ForEach-Object {Remove-AdGroupMember -Identity "Gruppo1" -members $_.utenti}

Per rimuovere un account da tutti i gruppi Active Directory si può utilizzare il comando
Get-ADUser -Identity Giovanni.Lubrano -Properties MemberOf | ForEach-Object {$_.MemberOf | Remove-ADGroupMember -Members $_.DistinguishedName -Confirm:$false}





martedì 23 febbraio 2021

PowerShell: Aggiungere membri in un gruppo Active Directory

Per aggiungere account utente e computer ad un gruppo Active Directory viene utilizzato il cmdlet Add-AdGroupMember.

Sintassi

Add-ADGroupMember
   [-WhatIf]
   [-Confirm]
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   [-Identity] <ADGroup>
   [-Members] <ADPrincipal[]>
   [-MemberTimeToLive <TimeSpan>]
   [-Partition <String>]
   [-PassThru]
   [-Server <String>]
   [-DisablePermissiveModify]
   [<CommonParameters>]

   
Parametri

-AuthType 
Specifica il metodo di autenticazione. I valori accettati dal parametro sono:
  • Negotiate oppure 0 (default)
  • Basic oppure 1
-Confirm
Se specificato, tale parametro mostra la richiesta di conferma prima di eseguire il cmdlet.

-Credential
Specifica le credenziali dell'account utente con cui eseguire il comando. Se omesso viene considerato l'utente corrente che sta eseguendo il comando. Al parametro può essere passato il nome dell'account, come ad es. "utente01" o "Dominio\utente01" oppure può essere passato un'oggetto PSCredential generato dal cmdlet Get-Credential. Se viene specificato un'account utente verrà richiesto di inserire la password all'esecuzione del comando.

-DisablePermissiveModify
Gli aggiornamenti dei membri del gruppo utilizzano una modifica permissiva per impostazione predefinita e il messaggio di errore quando si aggiunge un account che è già membro del gruppo viene soppresso. Specificando tale parametro il messaggio di errore verrà visualizzato.

-Identity
Tale parametro specifica l'oggetto gruppo Active Directory su cui si desidera intervenire. Al parametro può essere passato un qualsiasi valore che identifica il gruppo in maniera univoca come:
Distinguished name
GUID (objectGUID)
Security identifier (objectSid)
Security Account Manager account name (sAMAccountName) 

-Members
Permette di specificare un array di utenti, gruppi e computer separati da virgola da aggiungere al gruppo. Il parametro accetta come valori:
Distinguished name
GUID (objectGUID)
Security identifier (objectSid)
SAM account name (sAMAccountName)

-MemberTimeToLive
Permette di specificare un Time to Live (TTL) per i nuovi membri del gruppo.

-Partition
A tale parametro va passato il Distinguished Name (DN) di una partizione di Active Directory. Il cmdlet utilizzerà tale partizione per ricercare l'oggetto specificato dal parametro Identity.

-PassThru
Restituisce un oggetto che rappresenta l'item su cui si sta lavorando. Per impostazione predefinita, il cmdlet non genera alcun output.

-Server
Permette di specificare l'istanza di Active Directory Domain Services a cui connettersi per eseguire l'operazione.

-WhatIf
Mostra cosa accadrebbe se venisse eseguito il cmdlet. Il cmdlet non viene eseguito.

Aggiungere membri in un gruppo Active Directory
Per aggiungere account utente, computer o altri gruppi come membri in un gruppo Active Directory il comando sarà simile a
Add-AdGroupMember -Identity Gruppo1 -Members yosemite.sam, Giovanni.Lubrano
Come visibile è possibile specificare più membri separandoli con la virgola.

PowerShell, Add-AdGroupMember
FIG 1 - PowerShell, Add-AdGroupMember

Per aggiungere un account computer è necessario aggiungere il simbolo $ alla fine del nome dell'account.
Add-AdGroupMember -Identity Gruppo1 -Members PCDIR004$

Per velocizzare l'inserimento di account all'interno di un gruppo è possibile creare un file CSV. Il file sarà simile a quello mostrato in FIG 2 e conterrà l'elenco degli account da aggiungere al gruppo.
File CSV con l'elenco degli account
FIG 2 - File CSV con l'elenco degli account

Il comando da eseguire per aggiungere al gruppo specificato (Gruppo1) l'elenco degli account presenti nel file CSV (FileUtenti.csv) sarà simile a
Import-CSV C:\FileUtenti.csv -Header utenti | ForEach-Object {Add-AdGroupMember -Identity "Gruppo1" -members $_.utenti}

Per aggiungere un account utente a più gruppi è possibile utilizzare il comando
"Gruppo1","Gruppo2" | Add-ADGroupMember -Members Giovanni.Lubrano
con il seguente comando viene richiesto di specificare l'account utente da inserire nei due gruppi
"Gruppo1","Gruppo2" | Add-ADGroupMember -Members (Read-Host -Prompt "Inserisci l'account utente: ")

PowerShell, Aggiungere un account utente a più gruppi
FIG 3 - PowerShell, Aggiungere un account utente a più gruppi

Sfruttando i cmdlet Get-ADGroupMemberGet-ADUser possiamo copiare gli account utente da un gruppo all'altro. Ad esempio il seguente comando copia i membri account utente dal Gruppo1 al Gruppo2.
Get-ADGroupMember "Gruppo1" | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "Gruppo2" -Members $_}








mercoledì 17 febbraio 2021

PowerShell: Visualizzare informazioni su uno o più gruppi Active Directory

Per visualizzare uno o più gruppi Active Directory si utilizza il cmdlet Get-ADGroup.

Sintassi

Get-ADGroup
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -Filter <String>
   [-Properties <String[]>]
   [-ResultPageSize <Int32>]
   [-ResultSetSize <Int32>]
   [-SearchBase <String>]
   [-SearchScope <ADSearchScope>]
   [-Server <String>]
   [-ShowMemberTimeToLive]
   [<CommonParameters>]

Get-ADGroup
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   [-Identity] <ADGroup>
   [-Partition <String>]
   [-Properties <String[]>]
   [-Server <String>]
   [-ShowMemberTimeToLive]
   [<CommonParameters>]

Get-ADGroup
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -LDAPFilter <String>
   [-Properties <String[]>]
   [-ResultPageSize <Int32>]
   [-ResultSetSize <Int32>]
   [-SearchBase <String>]
   [-SearchScope <ADSearchScope>]
   [-Server <String>]
   [-ShowMemberTimeToLive]
   [<CommonParameters>]

Parametri

-AuthType 
Specifica il metodo di autenticazione. I valori accettati dal parametro sono:
  • Negotiate oppure 0 (default)
  • Basic oppure 1
-Credential
Specifica le credenziali dell'account utente con cui eseguire il comando. Se omesso viene considerato l'utente corrente che sta eseguendo il comando. Al parametro può essere passato il nome dell'account, come ad es. "utente01" o "Dominio\utente01" oppure può essere passato un'oggetto PSCredential generato dal cmdlet Get-Credential. Se viene specificato un'account utente verrà richiesto di inserire la password all'esecuzione del comando.

-Filter
Permette di specificare una query che recupera l'oggetto gruppo Active Directory.

-Identity
Tale parametro specifica l'oggetto gruppo Active Directory su cui si desidera intervenire. Al parametro può essere passato un qualsiasi valore che identifica il gruppo in maniera univoca come:
Distinguished name
GUID (objectGUID)
Security identifier (objectSid)
Security Account Manager account name (sAMAccountName) 

-LDAPFilter
Specifica una query LDAP che viene utilizzata per filtrare gli oggetti Active Directory. 

-Partition
A tale parametro va passato il Distinguished Name (DN) di una partizione di Active Directory. Il cmdlet utilizzerà tale partizione per ricercare l'oggetto specificato dal parametro Identity.

-Properties
Specifica le proprietà dell'oggetto da recuperare. Può essere usato per recuperare le proprietà che non sono incluse nel set di default.

-ResultPageSize
Specifica il numero di oggetti da includere in una pagina per una query AD DS.

-ResultSetSize
Specifica il numero massimo di oggetti da restituire per la query AD DS.

-SearchBase
Specifica un percorso Active Directory all'interno del quale effettuare la ricerca.

-SearchScope
Specifica l'ambito di una ricerca Active Directory. I valori accettabili per questo parametro sono:
  • Base o 0
  • OneLevel o 1
  • SubTree o 2
-Server
Permette di specificare l'istanza di Active Directory Domain Services a cui connettersi per eseguire l'operazione.

-ShowMemberTimeToLive
Indica che questo cmdlet visualizza i valori di Time to Live (TTL) per i membri del gruppo.


Esempi

Esempio 1
Get-ADGroup -filter * -properties GroupCategory | ft name,groupcategory
Visualizza tutti i gruppi Active Directory
Visualizza tutti i gruppi Active Directory
FIG 1 - Visualizza tutti i gruppi Active Directory


Esempio 2
Get-ADGroup -Identity Gruppo1
Visualizza il gruppo specificato dal parametro -Identity.
Visualizza il gruppo Active Directory specificato
FIG 2 - Visualizza il gruppo Active Directory specificato

Esempio 3
Get-ADGroup -Filter 'GroupCategory -eq "Security"'
Visualizza solo i gruppi di sicurezza.