Active Directory にユーザーを何人も作るとき、「Active Directory ユーザーとコンピューター」で1人ずつ作ると時間がかかり、入力ミスも起きやすくなります。PowerShell の New-ADUser を使えば、コマンドでユーザーを作れます。CSV ファイルと組み合わせれば、まとめて作成できます。
この記事では、ユーザーを作る場所(OU の識別名)を調べる方法、New-ADUser で1人作る方法、CSV ファイルから複数のユーザーを作る方法を確認します。
- ユーザーを作る OU の識別名(distinguishedName)を調べる
New-ADUserでユーザーを1人作る- CSV ファイルと
Import-Csvで、複数のユーザーをまとめて作る
New-ADUser などのコマンドは、ActiveDirectory モジュールに入っています。ドメインコントローラ、または「リモート サーバー管理ツール(RSAT)」の AD DS ツールを入れたコンピューターの PowerShell で、ドメイン管理者などユーザーを作成できる権限のあるアカウントで実行します。
ユーザーを作成する場所を調べる
コマンドでユーザーを作るときは、作成先の OU を -Path に識別名(distinguishedName)で指定します。-Path を省略すると、ドメインの既定のユーザー用コンテナー(通常は Users)に作られます。ここでは、営業部 OU の識別名を調べます。
拡張機能の表示を有効にする
「Active Directory ユーザーとコンピューター」で 表示 ›› 拡張機能 をクリックして、チェックを入れます。拡張機能を表示すると、プロパティに「属性エディター」タブが表示されるようになります。
OU の識別名を確認する
営業部 OU を右クリックして プロパティ を選び、「属性エディター」タブを開きます。distinguishedName 属性の値が、この OU の識別名です。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| 属性 | 値 |
|---|---|
| ⋮ | |
| displayName | <未設定> |
| 1distinguishedName | OU=営業部,DC=hirotanoblog,DC=local |
| dSASignature | <未設定> |
| ⋮ | |
| 属性(A) | distinguishedName |
| 2値(V) | OU=営業部,DC=hirotanoblog,DC=local |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | distinguishedName | OU の識別名。ディレクトリの中での位置を表す |
| 2 | 値 | ダブルクリックすると開く画面から、値をコピーできる |
識別名は、下の階層から順に、カンマで区切って並べたものです。OU=営業部,DC=hirotanoblog,DC=local は「hirotanoblog.local ドメインの直下にある営業部 OU」を表します。
| 部分 | 意味 |
|---|---|
| OU=営業部 | 組織単位(OU)の名前 |
| DC=hirotanoblog,DC=local | ドメイン名 hirotanoblog.local を、ドット(.)ごとに DC= で表したもの |
コマンドでユーザーを作成する
PowerShell の New-ADUser で、ユーザーを作成します。よく使うパラメーターは次のとおりです。
| パラメーター | 意味 |
|---|---|
| -Name | オブジェクトの名前。「Active Directory ユーザーとコンピューター」の一覧の「名前」になる(必須) |
| -SamAccountName | Windows 2000 より前の形式のログオン名(ドメイン名\ログオン名 の形で使う) |
| -UserPrincipalName | ユーザー プリンシパル名(UPN)。ログオン名@ドメイン名 の形のログオン名 |
| -DisplayName | 表示名 |
| -Path | ユーザーを作る OU やコンテナーの識別名。省略すると既定のユーザー用コンテナー |
| -AccountPassword | 初期パスワード。文字列ではなく SecureString(保護された文字列)で渡す |
| -Enabled | アカウントを有効にするかどうか |
| -ChangePasswordAtLogon | 次回ログオン時にパスワードの変更を求めるかどうか |
New-ADUser でユーザーを作る
営業部 OU に、ユーザー「佐藤太郎」を作成します。
PowerShell
New-ADUser -name '佐藤太郎' -SamAccountName satout -UserPrincipalName satou.taro@hirotanoblog.local -Path "OU=営業部,DC=hirotanoblog,DC=local" -AccountPassword (ConvertTo-SecureString -AsPlainText 'Password@123' -force) -Enabled $true -ChangePasswordAtLogon $true
| 指定 | 意味 |
|---|---|
| -name ‘佐藤太郎’ | オブジェクトの名前を「佐藤太郎」にする |
| -SamAccountName satout | Windows 2000 より前の形式のログオン名を「satout」にする |
| -UserPrincipalName satou.taro@hirotanoblog.local | UPN を「satou.taro@hirotanoblog.local」にする |
| -Path “OU=営業部,DC=hirotanoblog,DC=local” | 営業部 OU に作成する |
| -AccountPassword (ConvertTo-SecureString …) | 文字列「Password@123」を ConvertTo-SecureString で SecureString に変換し、初期パスワードにする |
| -Enabled $true | アカウントを有効にする |
| -ChangePasswordAtLogon $true | 初回ログオン時にパスワードの変更を求める |
初期パスワードは、ドメインのパスワードのポリシー(長さや複雑さの要件)を満たす必要があります。パスワードのポリシーは 【Active Directory】デフォルトドメインポリシーについて で紹介しています。
ConvertTo-SecureString -AsPlainText を使うと、パスワードが平文のままコマンドの履歴やスクリプトに残ります。本番では、Read-Host -AsSecureString で実行時に入力するなど、パスワードを残さない方法を使います。
作成したユーザーを確認する
「Active Directory ユーザーとコンピューター」の営業部 OU に、佐藤太郎が作成されています。
| 名前 | 種類 |
|---|---|
| 1佐藤太郎 | ユーザー |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | 佐藤太郎 | -Name で指定した名前のユーザーが、-Path で指定した営業部 OU にできた |
ユーザーのプロパティの「アカウント」タブで、ログオン名と次回ログオン時のパスワード変更も確認します。
| 1ユーザー ログオン名(U) | satou.taro @hirotanoblog.local |
| 2ユーザー ログオン名 (Windows 2000 より前) | HIROTANOBLOG\ satout |
| ⋮ (中略) | |
| 3アカウント オプション | ☑ ユーザーは次回ログオン時にパスワード変更が必要 ☐ ユーザーはパスワードを変更できない ☐ パスワードを無期限にする |
| アカウントの期限 | ◉ なし○ 有効期限 |
| No. | 表示 | 対応するパラメーター |
|---|---|---|
| 1 | satou.taro @hirotanoblog.local | -UserPrincipalName |
| 2 | HIROTANOBLOG\ satout | -SamAccountName |
| 3 | 次回ログオン時にパスワード変更が必要 | -ChangePasswordAtLogon $true |
PowerShell で確認する場合は、Get-ADUser を使います。たとえば Get-ADUser -Filter * -SearchBase "OU=営業部,DC=hirotanoblog,DC=local" で、営業部 OU のユーザーを一覧できます。
CSV ファイルで複数のユーザーを作成する
複数のユーザーを作るときは、ユーザーの情報を CSV ファイルにまとめ、Import-Csv で読み込んで、1行ずつ New-ADUser に渡します。
CSV ファイルを作る
Name、Email、Sam、OU の4つの列を持つ CSV ファイルを作ります。1行目には列名を書きます。
| 列 | 内容 | 使うパラメーター |
|---|---|---|
| Name | ユーザーの名前 | -Name、-DisplayName |
| ユーザーのアドレス(UPN として使う) | -UserPrincipalName | |
| Sam | Windows 2000 より前の形式のログオン名 | -SamAccountName |
| OU | 作成先の識別名(OU=組織単位名,DC=…,DC=… の形) | -Path |
識別名にはカンマが入るので、OU 列の値はダブルクォーテーション(”)で囲みます。次の内容を users.csv として、C:\Users\Administrator\Documents に保存しました。
users.csv
Name,Email,Sam,OU 鈴木二郎,suzuki.jirou@hirotanoblog.local,suzukin,"OU=営業部,DC=hirotanoblog,DC=local" 高橋三郎,takahashi.saburou@hirotanoblog.local,takahashis,"OU=営業部,DC=hirotanoblog,DC=local" 田中四郎,tanaka.shirou@hirotanoblog.local,tanakas,"OU=営業部,DC=hirotanoblog,DC=local" 山田五郎,yamada.gorou@hirotanoblog.local,yamadag,"OU=営業部,DC=hirotanoblog,DC=local"
Windows PowerShell 5.1 の Import-Csv は、BOM のないファイルを UTF-8 として読みます。Excel の「CSV(コンマ区切り)」で保存した Shift_JIS のファイルをそのまま読むと、日本語の名前が文字化けします。CSV は UTF-8 で保存するか、Shift_JIS のまま読む場合は -Encoding Default を付けます。
CSV を読み込んでユーザーを作る
次のコマンドで、users.csv の各行からユーザーを作成します。
PowerShell
Import-Csv -Path "C:\Users\Administrator\Documents\users.csv" | ForEach-Object {New-ADUser -name $_.name -DisplayName $_.name -SamAccountName $_.sam -UserPrincipalName $_.email -Path $_.ou -AccountPassword (ConvertTo-SecureString -AsPlainText 'password@123' -force) -Enabled $true -ChangePasswordAtLogon $true}
このコマンドは、次の順に処理します。
Import-Csvで users.csv を読み込み、1行ごとに、列名をプロパティに持つオブジェクトを作るForEach-Objectで、そのオブジェクトを1つずつ取り出す- 取り出したオブジェクト(
$_)の値を使って、New-ADUserでユーザーを作る。パスワード、有効化、初回ログオン時のパスワード変更は全員同じ
| 変数 | 意味 |
|---|---|
| $_.name | Name 列の値(ユーザーの名前) |
| $_.sam | Sam 列の値(SamAccountName) |
| $_.email | Email 列の値(UserPrincipalName) |
| $_.ou | OU 列の値(作成先の識別名) |
プロパティ名は大文字と小文字を区別しないので、CSV の列名が Name でも $_.name で取り出せます。なお、Email 列は UPN として使っているだけなので、ユーザーのメール属性(mail)は設定されません。メール属性も入れる場合は -EmailAddress を足します。
コマンドを実行すると、CSV の内容どおりに営業部 OU にユーザーが作成されます。
| 名前 | 種類 |
|---|---|
| 1高橋三郎 | ユーザー |
| 佐藤太郎 | ユーザー |
| 山田五郎 | ユーザー |
| 田中四郎 | ユーザー |
| 鈴木二郎 | ユーザー |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | 5人のユーザー | 先に作った佐藤太郎に加えて、CSV の4人(鈴木二郎、高橋三郎、田中四郎、山田五郎)が作成された |
CSV ファイルを使えば、作成するユーザーの一覧を表計算ソフトで用意して、そのまま一括で登録できます。入力ミスや作業時間を減らせます。
うまくいかないとき
| 状態 | よくある原因 | 確認すること |
|---|---|---|
New-ADUser が見つからない | ActiveDirectory モジュールがない | DC か、RSAT の AD DS ツールを入れたコンピューターで実行しているか |
| パスワードのエラーになる | 初期パスワードがパスワードのポリシーを満たしていない | 長さと複雑さの要件 |
| OU が見つからないエラーになる | -Path の識別名が違う | 属性エディターの distinguishedName と一致しているか |
| 名前が文字化けする | CSV の文字コードと読み込み方が合っていない | UTF-8 で保存するか、-Encoding Default を付ける |
| 同じ名前のユーザーでエラーになる | 同じ SamAccountName や、同じ OU に同じ名前のユーザーがすでにある | CSV に重複がないか、既存のユーザーと重ならないか |
まとめ
| 作業 | 使うもの | ポイント |
|---|---|---|
| 作成先を調べる | 属性エディターの distinguishedName | 表示 ›› 拡張機能 を有効にする |
| 1人作る | New-ADUser | Name と SamAccountName、UPN、Path、SecureString のパスワード |
| まとめて作る | Import-Csv + ForEach-Object + New-ADUser | OU 列はダブルクォーテーションで囲む。CSV の文字コードに注意 |
| 確認する | ユーザーとコンピューター、Get-ADUser | ログオン名と次回ログオン時のパスワード変更 |
コメント