Automatizzazione della creazione di utenti Active Directory con New-ADUser

Sei stanco di aprire Active Directory (AD) Utenti e Computer (ADUC), fare clic in giro, sbagliare a digitare e seguire le procedure per creare un nuovo account utente per la sesta volta oggi? In tal caso, è necessario automatizzare il processo comune di utilizzo di Active Directory per aggiungere un utente con PowerShell utilizzando il cmdlet New-ADUser!

È venerdì sera e manca un’ora al momento in cui hai programmato di andare a casa per il fine settimana. È stata una settimana impegnativa, quindi hai deciso di fare piani per guardare la grande partita con i tuoi amici più cari. Ma il tuo capo si avvicina casualmente e chiede: “Hai ricevuto l’email? Puoi occupartene entro la fine della giornata?” Apri rapidamente Microsoft Outlook e naturalmente è una email dal dipartimento HR, con te in copia conforme da parte del tuo responsabile, che ti chiede di creare 400 nuovi account Active Directory (AD) per i dipendenti prima di lasciare l’ufficio. Fantastico. Addio partita.

Cerchi rapidamente su Internet delle opzioni per velocizzare la creazione di questi account utente e scopri che puoi automatizzare la creazione di account AD utilizzando la riga di comando e il cmdlet PowerShell chiamato New-ADUser.

Di solito, gli amministratori creano manualmente gli account AD utilizzando la Console Utenti e Computer Active Directory installata sul tuo computer desktop tramite Strumenti di amministrazione remota del server (RSAT). Ma creare un utente AD in questo modo richiede, in media, tre minuti per account utente. La creazione di account utente AD non è un lavoro affascinante ed è adatta all’automazione.

Ci sono tre modi comuni in cui gli amministratori creano oggetti degli account utente AD utilizzando il cmdlet New-AdUser.

  1. Aggiungi un account utente Active Directory utilizzando i parametri obbligatori e aggiuntivi del cmdlet.
  2. Copia un oggetto utente AD esistente per creare un nuovo account utilizzando il parametro Instance.
  3. Associa il cmdlet Import-Csv al cmdlet New-ADUser per creare più oggetti utente Active Directory utilizzando un file con valori separati da virgola (CSV).

Queste pratiche possono talvolta essere combinate insieme per creare una soluzione più efficiente. Ad esempio, è possibile utilizzare tutte e tre le opzioni per creare un account AD di modello che può essere copiato utilizzando un file CSV per generare più nuovi account AD.

In questo articolo, imparerai come utilizzare New-AdUser approfittando di ciascuno di questi metodi.

Gestisci e reporta Active Directory, Exchange e Microsoft 365 con ManageEngine ADManager Plus. Scarica la versione di prova gratuita!

Prerequisiti/Requisiti

Prima di iniziare a utilizzare il cmdlet New-AdUser, dovrai prima assicurarti di soddisfare alcuni prerequisiti.

  • Windows PowerShell 5.1
  • Il pacchetto Remote Server Administration Tools (RSAT) è installato. Questo pacchetto installa il modulo PowerShell di Active Directory che contiene il cmdlet New-AdUser.
  • Accedi a un computer Windows nello stesso dominio degli account utente che desideri creare
  • Accedi come un account utente AD con il permesso di creare nuovi account utente

Una volta soddisfatti questi requisiti, sei pronto!

Crea un singolo account utente utilizzando il cmdlet New-ADUser

Iniziamo creando un singolo account utente per mostrare come funziona il cmdlet New-ADUser a un livello di base. Noterai che New-ADUser non ha molti parametri obbligatori. Infatti, l’unico parametro obbligatorio è il parametro Name, ma raramente viene utilizzato da solo.

In genere, utilizzerai molti parametri diversi per creare un account utente. Fortunatamente, la maggior parte dei parametri è autoesplicativa e si abbina bene a ciò che vedi in ADUC. Come puoi vedere nell’esempio riportato di seguito, puoi facilmente utilizzare molti parametri. Ogni parametro corrisponde approssimativamente a un singolo attributo dell’account utente.

Nota che stiamo usando il carattere di backtick nell’esempio. Questo è solo per evitare una lunga riga singola per motivi di leggibilità.

PS51> New-ADUser `
    -Name "Kevin Sapp" `
    -GivenName "Kevin" `
    -Surname "Sapp" `
    -SamAccountName "kesapp-test" `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -ChangePasswordAtLogon $True `
    -Company "Code Duet" `
    -Title "CEO" `
    -State "California" `
    -City "San Francisco" `
    -Description "Test Account Creation" `
    -EmployeeNumber "45" `
    -Department "Engineering" `
    -DisplayName "Kevin Sapp (Test)" `
    -Country "us" `
    -PostalCode "940001" `
    -Enabled $True

L’unità organizzativa (OU) in cui è contenuto l’oggetto utente AD non può avere un SamAccountName duplicato.

Ora che l’account è stato creato, confermare che l’account sia stato creato utilizzando il cmdlet Get-ADUser. Di seguito è possibile vedere che Get-AdUser restituisce alcuni attributi comuni per l’account utente appena creato.

PS51> Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City

DistinguishedName : CN=Kevin Sapp,CN=Users,DC=mylab,DC=local
Enabled           : True
GivenName         : Kevin
Name              : Kevin Sapp
ObjectClass       : user
ObjectGUID        : 3b18338d-b3c7-4d00-a54a-1d3121e1363f
SamAccountName    : kesapp-test
SID               : S-1-5-21-1181311581-1397355964-1468337501-1109
Surname           : Sapp
UserPrincipalName : kesapp-test@mylab.local

Copiare un oggetto utente AD esistente

Un altro metodo per la creazione di un account consiste nel copiare un oggetto utente AD esistente e utilizzarlo come modello per un nuovo account AD. Ci sono diversi vantaggi in questo approccio:

  • Si risparmia il tempo di dover specificare singolarmente ciascun parametro
  • Contribuisce a standardizzare la creazione di account AD
  • Previne gli errori umani causati dalla creazione manuale di account e consente ai dipendenti dello stesso team di avere gli stessi attributi AD personalizzati

Per questo esempio, userai l’account appena creato come modello (kesapp-test). Forse devi creare un nuovo account utente con gli stessi attributi AD di stato, luogo, dipartimento, paese e città. Questo nuovo account sarà per l’impiegato James Brown.

Si noti che c’è un limite con questo approccio e solo le seguenti proprietà dell’account AD elencate nel link sottostante possono essere copiate con questo processo. Per ulteriori informazioni, consultare la pagina di documentazione di Microsoft Copia delle proprietà di un utente.

Il primo passo è trovare l’account utente AD che verrà utilizzato come modello e assicurarsi che tutti gli attributi da copiare siano forniti tramite il parametro Properties. Per farlo, utilizzare il cmdlet Get-ADUser come mostrato di seguito. Questo semplicemente memorizza l’oggetto utente AD nella variabile $template_account.

Si noti che la seconda riga imposta la proprietà UserPrincipalName (UPN) dell’oggetto modello su $null. Questo è consigliato per assicurarsi che l’UPN del modello sia univoco. Ogni account utente AD deve avere un UPN univoco.

$template_account = Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City
$template_account.UserPrincipalName = $null

Una volta catturato l’account utente di modello, è possibile utilizzare quell’oggetto come valore per il parametro Instance e fornire eventuali parametri specifici dell’utente per compilare gli altri attributi come mostrato di seguito.

New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

Ora dovresti avere un account per James con tutti gli attributi AD consentiti portati dall’oggetto di modello.

Problemi comuni con il modello di account utente

Un errore comune in questo approccio è utilizzare il carattere jolly * per il parametro Properties durante la cattura dell’oggetto di modello. Gli amministratori lo fanno perché vogliono copiare tutti i proprietà dell’account utente in una volta sola. Ma questo non funziona.

Ad esempio, il comando seguente genererà un errore:

$template_account = Get-ADUser -Identity kesapp-test -Properties *
New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -UserPrincipalName '[email protected]' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

Il problema con questo approccio è che l’attributo UserPrincipalName deve essere univoco in tutto il Forest AD. Pertanto, l’UPN dovrebbe essere sovrascritto nel comando New-ADUser o impostato su null nella variabile del modello (mostrata di seguito).

$template_account.UserPrincipalName = $null

Un’altra ragione per cui l’approccio con il carattere jolly fallisce è che alcune delle proprietà AD copiate tramite il carattere jolly sono di sola lettura (di proprietà del Security Account Manager).

Permission error when copying AD objects

Creare nuovi account utente con un file CSV

Portando ciò che hai imparato un passo avanti, puoi leggere gli account dei dipendenti da un file CSV e utilizzare New-ADUser per creare gli account utente AD.

Questa soluzione viene spesso utilizzata da molte organizzazioni per automatizzare la creazione di account in combinazione con sistemi HR che creano file piatti con informazioni di integrazione dei nuovi dipendenti.

Supponiamo che ti sia stato inviato un elenco di nuovi dipendenti in un file CSV. Ogni riga nel file CSV rappresenta un singolo record e ha le seguenti colonne: FirstName, LastName, Department, State, EmployeeID e Office. La convenzione di denominazione per l’account di accesso dell’utente è la prima lettera del nome concatenata con il cognome, ad esempio ksapp per l’utente Kevin Sapp.

FirstName, LastName, Department, State, EmployeeID, Office, UserPrincipalName, SamAccountName, Password
Micheal, Jordan, NBA, Chicago, 23, Chicago Bulls, mjordan@mylab.local, mjordan, p@ssw0rd1
Lebron, James, NBA, Los Angeles,24, LA Lakers,ljames@mylab.local, ljames, p@ssw0rd2
Dwayne, Wade, NBA, Miami, 13, Miami Heat, dwade@mylab.local, dwade, p@ssw0rd3
$import_users = Import-Csv -Path sample.csv

Una volta ottenuto il file CSV, utilizza quindi Import-Csv per leggere il file CSV e catturare ogni riga come un singolo oggetto. Quindi itera su ciascuna di queste righe passando i campi appropriati nel file CSV ai parametri previsti di New-ADUser. Puoi vedere un esempio di ciò di seguito.

$import_users | ForEach-Object {
    New-ADUser `
        -Name $($_.FirstName + " " + $_.LastName) `
        -GivenName $_.FirstName `
        -Surname $_.LastName `
        -Department $_.Department `
        -State $_.State `
        -EmployeeID $_.EmployeeID `
        -DisplayName $($_.FirstName + " " + $_.LastName) `
        -Office $_.Office `
        -UserPrincipalName $_.UserPrincipalName `
        -SamAccountName $_.SamAccountName `
        -AccountPassword $(ConvertTo-SecureString $_.Password -AsPlainText -Force) `
        -Enabled $True
}

Gestisci e segnala Active Directory, Exchange e Microsoft 365 con ManageEngine ADManager Plus. Scarica la versione di prova gratuita!

Riassunto

In questo post, hai imparato come fornire nuovi account utente utilizzando tre metodi diversi:

  1. Creazione di un singolo account
  2. Copia di un account utente da un modello
  3. Creazione di account multipli utilizzando un file CSV

Questi sono modi di base per fornire nuovi utenti nel tuo ambiente. Questi metodi funzionano bene quando li raggruppi insieme creando una funzione PowerShell e un modulo. Puoi persino andare oltre e creare il tuo processo di automazione utilizzando un database SQL o Oracle come origine (anziché un file CSV). Sentiti libero di sfruttare ciascun metodo in base alle tue esigenze e casi d’uso unici.

Speriamo che queste informazioni ti siano utili! Hai imparato una nuova abilità e sei riuscito a partecipare alla festa con i tuoi amici senza sacrificare il tuo equilibrio tra lavoro e vita personale!

Per ulteriori letture

Source:
https://adamtheautomator.com/new-aduser/