ディレクトリにデータをインポートする

PowerShell を使用してディレクトリにデータをインポートできる方法がいくつかありますが、通常は CSV ファイルを使用します。 このファイルは Excel などを使用して手動で作成することも、SQL データベースや HR アプリケーションなどの既存のデータ ソースからエクスポートすることもできます。 Azure Active Directory にデータをインポートするための一般的なシナリオを次に示します。

新しいユーザーの一括作成

Azure Active Directory で 一括してユーザーを作成するときに、作成する新しいユーザーに関する情報を含む CSV ファイルがある場合は、次の点を考慮してください。

  1. ユーザー名、表示名、エイリアスの命名規則を確立または実装する必要があります。 たとえば、ユーザー名はユーザーの姓から構成され、その後にピリオド、名の順に続きます。 つまり、contoso.com の "John Smith" は "Smith.John@contoso.com" というユーザー名になります。 表示名についても同様のルールを実装する必要があります。たとえば、"John Smith (Accounting)" のように、表示名に部署名を追加します。エイリアスについても同様です。
  2. 新しく作成したユーザーの初期パスワードに関する規則を実装し、新しいユーザーが安全な方法でパスワードを受け取る方法を考える必要があります。 このために使用される一般的な方法では、ランダムなパスワードを生成し、新しいユーザーまたはその管理者に電子メールで送信します。

こういった方法が確立されていると仮定して、新しいユーザーを作成するために使用している CSV ファイルに含める必要がある内容について見ていきます。 この記事で使用する CSV ファイルの例を次に示します。

Firstname,MiddleInitials,Lastname,Department,JobTitle
Peter,S,Fischer,Development,Manager
James,T,McGuire,Research,Assistant
Karen,R,Cristo,Sales,Director

PowerShell を使用してこれらのユーザーを一括作成するには、次のいくつかの手順を実行する必要があります。

  1. ディレクトリで PowerShell セッションをセットアップします。これには、Connect-AzureAD コマンドレットを使用します。
  2. Import-CSV コマンドレットを使用して、PowerShell セッションで CSV ファイルからデータをインポートします。
  3. ファイルの各行で、新しいユーザーを作成するために必要なパラメーターを作成します。
  4. New-AzureADUser コマンドレットを実行して新しいユーザーを作成します。

運用環境でこのスクリプトを使用する場合は、次のような追加項目を加えることもできます。

  • エラー処理 - ユーザーを作成できない場合の対処方法
  • 実行レポート - スクリプトの終了時に、実行した内容 (作成したユーザー数など) の概要を提供します。

ここではこれらの部分をスキップし、コア機能に集中します。

前の図の CSV ファイルをインポートし、新しいユーザーを作成するのに使用可能なスクリプトを次に示します。 このスクリプトをお使いの環境内で実行するには、最初のセクションの値をお使いの環境に適した値に更新する必要があります。

注: 新しいユーザーのパスワードは、ディレクトリに設定したパスワードの複雑性の規則に準拠する必要があります。 注: ここで指定する管理者アカウントは、指定するディレクトリの管理者である必要があります。

###
### 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
###
    }

注: このスクリプトを正常に実行すると、新しいユーザーが Azure Active Directory に作成されます。 AccountEnabled = $Trueを指定しているため、新しいユーザーはすぐにパスワードを使用してディレクトリにサインインできます。 スクリプトの実行後にユーザー アカウントを直接アクティブにしない場合は、-AccountEnabled = $False を指定し、後で Set-AzureADUser コマンドレットを使用してアカウントを有効にすることができます。