【Active Directory】PowerShellでユーザーを作成する

Active Directoryで複数のユーザーを作成することは、ITインフラを管理する上で非常に重要な作業です。これを手作業で行うと、時間がかかり、エラーになりやすいです。
このブログでは、CSVファイルを使用して、コマンドラインからユーザーを作成し、ドメイン内に複数のユーザーを効率的に作成する方法を確認します。コマンドラインを利用することで、処理を自動化し、時間と労力を節約することができます。

以下では、ユーザーを作成する場所を特定する手順、PowerShellを使用してコマンドラインからユーザーを作成する方法、作成したユーザーを表示する方法、およびCSVファイルを参照して複数のユーザーを作成する方法を確認します。これらの手順により、ユーザーを一括で作成し、より効率的に管理することができます。

スポンサーリンク

ユーザーを作成する場所を特定する

コマンドラインからユーザーを作成するには、「Active Directory ユーザーとコンピューター」のどこにユーザーを作成するのかを確認しておく必要があります。
場所を特定するためには、まず、「Active Directory ユーザーとコンピューター」で、「表示」メニューをクリックし、「拡張機能」オプションをアクティブにします。

次に、ユーザーを作成する組織単位(今回は営業部OUとします)を右クリックし、「プロパティ」を選択します。

属性エディター」タブを選択します。「識別名(distinguishedName)」属性がオブジェクトが作成された場所を示しています。

識別名(distinguishedName)」属性をダブルクリックすると、値をコピーすることができます。

プロパティの値を知ることで、目的の場所にユーザーを作成することができます。
スポンサーリンク

コマンドラインからユーザーを作成する

PowerShellの「New-ADUser」コマンドでユーザーを作成することができます。
このコマンドでは、よく使うプロパティをパラメータを使って設定することができます。よく使うパラメータは、ユーザーオブジェクトのnameプロパティを設定する「name」、ユーザーのログイン名を設定する「SamAccountName」、「user@DNS.DomainName」形式で設定する「UserPrincipalName」、新しいオブジェクトを作成する組織単位またはコンテナを指定する「path」です。
その他、よく使われるパラメータとして、アカウントの新しいパスワード値を指定する「アカウントパスワード」、アカウントが有効かどうかの指定、次回ログイン時にパスワードを変更する必要があるかどうかなどがあります。アカウントパスワードパラメータを使用する場合、このパラメータに入力された値を暗号化する必要があることに注意する必要があります。
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 」と指定します。
  • -UserPrincipalName  : ユーザーのユーザープリンシパル名を「satou.taro@hirotanoblog.local」と指定します。
  • -Path : ユーザーが作成されるOU(組織単位)を「 “OU=営業部,DC=hirotanoblog,DC=local”」と指定します。
  • -AccountPassword (ConvertTo-SecureString -AsPlainText ‘Password@123’ -force) : ユーザーアカウントのパスワードを「Password@123」指定します。パスワードはパスワードは、ConvertTo-SecureStringを使用して暗号化されています。
  • -Enabled $true : ユーザーアカウントを有効にします。
  • -ChangePasswordAtLogon $true : ユーザーが初回ログイン時にパスワードを変更する必要があります。
このスクリプトは、営業部OUに「佐藤太郎」というユーザーアカウントを作成し、ログオン名をsatout、ユーザープリンシパル名をsatou.taro@hirotanoblog.local、パスワードをPassword@123と設定し、アカウントを有効化し、初回ログイン時にパスワードを変更するようにしています。
SamAccountName」、「UserPrincipalName」、次回ログオン時のパスワード変更などのプロパティもあわせて確認します。

スポンサーリンク

CSVファイルを使って複数ユーザーを作成する

ドメイン内に複数のユーザーを作成する場合、CSVファイルを参照しながら、複数のユーザーを作成する方法があります。
今回は、カラム(NameEmailSamOU)を持つ新しいCSVファイルを作成します。最初の行には、各カラムの名前を記述してください。
  • 「Name」列:作成するユーザーの名前を入力します。
  • 「Email」列:各ユーザーの電子メールアドレス(UserPrincipalName として使用)を入力します。
  • 「Sam」列:SamAccountNameを入力します。
  • 「OU」列:ユーザーを作成する場所(Path)を入力します。「OU=OrganizationalUnitName,DC=DomainComponentName,DC=DomainComponentName」の形式である必要があります。
下記CSV ファイルをusers.csv」として、C:\Users\Administrator\Documentsに保存します。
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"
Import-CSV」コマンドを使用して、CSVファイルの内容をPowerShellにインポートします。「foreach」ループを使用してCSVファイルの各行を繰り返し、「New-ADUser」コマンドを使用して各行の新しいユーザーを作成します。
「users.csv」という名前のCSVファイルから複数のユーザーを作成するコマンドは次のようになります
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}
  • users.csv“ファイルをインポートし、各ユーザーの情報を含むオブジェクトの配列を作成します。
  • ForEach-Objectコマンドレットを使用して、配列内の各オブジェクトに対して、New-ADUserコマンドレットを呼び出します。
  • New-ADUserコマンドレットは、各ユーザーの情報を使用してActive Directory上に新しいユーザーアカウントを作成します。これには、名前、表示名、SamAccountName、UserPrincipalName、OU、アカウントパスワード、アカウントの有効化、およびログオン時のパスワード変更が含まれます。

各変数の意味は以下の通りです。

  • $_.name : ユーザーの名前
  • $_.sam : ユーザーのSamAccountName
  • $_.email : ユーザーのUserPrincipalName(メールアドレス)
  • $_.ou : ユーザーを作成するOUのパス
コマンドを実行すると、CSVファイルの情報に従って、ドメイン内にユーザーが作成されます。

CSVファイルを使用して複数のユーザーを作成することは、ドメイン内の大量のユーザーを管理するための簡単で効率的な方法です。簡単にプロセスを自動化し、時間と労力を節約することができます。

コメント