Importare i dati nella directory
Esistono vari modi per importare i dati nella directory usando PowerShell, tuttavia il metodo più diffuso consiste nell'usare un file con estensione csv. Questo file può essere creato manualmente, ad esempio tramite Excel, oppure può essere esportato da un'origine dati esistente, ad esempio un database SQL o un'applicazione HR. Ecco alcuni scenari comuni per cui è necessario importare dati in Azure Active Directory:
Creazione in massa di nuovi utenti
Se si desidera creare utenti in massa in Azure Active Directory e si dispone di un file con estensione csv che contiene informazioni sui nuovi utenti da creare, di seguito sono riportate alcune considerazioni:
- È necessario stabilire o implementare una convenzione di denominazione per i nomi utente, i nomi visualizzati e gli alias. Ad esempio: i nomi utente vengono creati partendo dal cognome dell'utente, seguito da un punto, seguito a sua volta dal nome. Quindi il nome utente per "John Smith" in contoso.com sarebbe "Smith.John@contoso.com". Regole simili dovranno essere implementate per i nomi visualizzati, magari aggiungendo il nome del reparto al nome visualizzato, ad esempio "John Smith (Accounting)", e per l'alias.
- È necessario implementare una convenzione per la password iniziale dell'utente appena creato e occorre individuare un modo per consentire ai nuovi utenti di ricevere la password in modo sicuro. I metodi usati più di frequente per farlo sono la generazione di una password casuale e il suo invio tramite posta elettronica al nuovo utente o al manager.
Supponendo di averli stabiliti, ora si osserverà cosa deve contenere il file con estensione csv usato per creare nuovi utenti. Di seguito è riportato un esempio del file con estensione csv in uso in questo articolo:
Firstname,MiddleInitials,Lastname,Department,JobTitle
Peter,S,Fischer,Development,Manager
James,T,McGuire,Research,Assistant
Karen,R,Cristo,Sales,Director
Per creare in massa questi utenti con PowerShell, è necessario eseguire diversi passaggi:
- Configurare una sessione PowerShell con la directory, in questo caso si usa il cmdlet
Connect-AzureAD
. - Importare i dati dal file con estensione csv nella sessione di PowerShell usando il cmdlet
Import-CSV
. - Per ogni riga del file, creare i parametri necessari per creare un nuovo utente.
- Eseguire il cmdlet per creare il nuovo utente usando il cmdlet
New-AzureADUser
.
Se si prevede di usare questo script in un ambiente di produzione, probabilmente si aggiungeranno altre parti, ad esempio:
- Gestione degli errori: cosa fare se non è possibile creare un utente.
- Creazione di report sull'esecuzione: dopo il completamento dello script, fornisce una panoramica di cosa è stato eseguito, come numero di utenti creati e così via.
Queste parti verranno ignorate per il momento, per concentrarsi sulla funzionalità di base.
Ecco lo script che è possibile usare per importare il file con estensione csv come illustrato e creare nuovi utenti. Affinché questo script funzioni nell'ambiente, è necessario aggiornare i valori nella prima sezione con i valori corretti per il proprio ambiente.
Nota: la password dei nuovi utenti deve rispettare le regole di complessità delle password impostate per la directory. Nota: l'account amministratore che si specifica qui deve appartenere a un amministratore nella directory specificata.
###
### These are vairable you need to update to reflect your environment
###
$Admin = "Admin@contoso.com"
$AdminPassword = "my password"
$Directory = "contoso.com"
$NewUserPassword = "newuserspasswords"
$CsvFilePath = "C:\work\users.csv"
###
### Create a PowerShell connection to my directory. If you do not want to specify the password in the script, you can simply replace this with "Connect-AzureAD", which will prompt for a username and password.
###
$SecPass = ConvertTo-SecureString $AdminPassword -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($Admin, $SecPass)
Connect-AzureAD -Credential $cred
###
### Create a new Password Profile for the new users. We'll be using the same password for all new users in this example
###
$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.Password = $NewUserPassword
###
### Import the csv file. You will need to specify the path and file name of the CSV file in this cmdlet
###
$NewUsers = import-csv -Path $CsvFilePath
###
### Loop through all new users in the file. We'll use the ForEach cmdlet for this.
###
Foreach ($NewUser in $NewUsers) {
###
### Construct the UserPrincipalName, the MailNickName and the DisplayName from the input data in the file
###
$UPN = $NewUser.Firstname + "." + $NewUser.LastName + "@" + $Directory
$DisplayName = $NewUser.Firstname + " " + $NewUser.Lastname + " (" + $NewUser.Department + ")"
$MailNickName = $NewUser.Firstname + "." + $NewUser.LastName
###
### Now that we have all the necessary data for to create the new user, we can execute the New-AzureADUser cmdlet
###
New-AzureADUser -UserPrincipalName $UPN -AccountEnabled $true -DisplayName $DisplayName -GivenName $NewUser.FirstName -MailNickName $MailNickName -Surname $NewUser.LastName -Department $Newuser.Department -JobTitle $NewUser.JobTitle -PasswordProfile $PasswordProfile
###
### End the Foreach loop
###
}
Nota: dopo aver eseguito correttamente questo script, i nuovi utenti verranno creati in Azure Active Directory. Non ethat poiché è stato specificato -AccountEnabled = $True, i nuovi utenti possono usare immediatamente la password per accedere alla directory. Se non si vuole che gli account utenti siano attivi direttamente dopo l'esecuzione dello script, è possibile specificare -AccountEnabled = $False e abilitare gli account in un secondo momento usando il cmdlet Set-AzureADUser.