Netwrix 1Secureは、データとアイデンティティ全体にわたる統合された可視性を提供します。14日間の無料トライアルでフルアクセス可能です。無料トライアルを開始

リソースセンターブログ

PowerShell で AD ユーザーを一括作成し、認証情報をメールで送信する

PowerShell で AD ユーザーを一括作成し、認証情報をメールで送信する

Mar 17, 2023

毎年、教育機関では何百人もの学生が入学します。その結果、機関のシステムエンジニアは、各学生に対して AD アカウントを作成し、その後、学生にユーザー名とパスワードを手作業で知らせる必要があるため、通常より多くの時間と労力がかかります。

このステップバイステップのガイドは PowerShell スクリプト作成の力を借りて、システムエンジニアの負担を少し軽くします。スクリプトを使うことで、CSV ファイルから AD ユーザーアカウントを作成し、ランダムなパスワードを割り当てたうえで、歓迎メールで新入生にユーザー名とパスワードを送信できます。

次の cmdlet をスクリプト内で使用しました。詳細については、各 cmdlet をクリックしてください。

新しいユーザーに認証情報(クレデンシャル)付きのメールを送るために、Gmail の SMTP サーバーを使用しています。ただし、スクリプトはご利用の IT 環境やメールサーバーに合わせて設定できます。
以下のスクリプトは、Windows Server 2016 上で動作している DC で作成・検証されました。Windows Server 2012、2012 R2、または 2008 上でスクリプトを実行する必要がある場合、いくつかの PowerShell モジュールをインポートする必要があるかもしれません。

スクリプトを実行する前に、次の 前提条件:

  • 学生の情報が入った CSV ファイル(名、姓、Sam アカウント名、メールアドレス)
  • 歓迎メールの文面が含まれたテキストまたは Word(doc または docx)ファイル
  • 有効なインターネット接続(Gmail の SMTP サーバーを使用したい場合)

厳選した関連コンテンツ:

これらの要件をすべて満たしている場合は、2つの簡単な手順に従って AD アカウントを作成し、歓迎メールを一括で送信できます。

ステップ 1。

スクリプトをテキスト ファイルにコピー&ペーストし、次の.ps1 拡張子で保存します:

      ##Beginning of functions

Function Format-Email {
 
Param ([string]$WCEmailContent,[string]$UserPrincipalName,[string]$UserPassword)

return $WCEmailContent + "User Name = $UserPrincipalName
Password = $UserPassword
Thank You
IT Department"
}

Function Send-Email {

Param ($Email, $Credential,[string]$WCEmailContent)
 
$From = "karim.buzdar@gmail.com"
$subject = "Domain Account Details"
$Body = $WCEmailContent
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"

Send-MailMessage -from $From -to $Email -Subject $subject -Body $Body -SmtpServer $SMTPServer -Port $SMTPPort -Credential $Credential -UseSsl

}

###End of Functions

##### Beginning of main programme

$Credential = (get-Credential) #Getting email credentials to be used for From field in Email message
$UsersFilePath = "C:UsersAdministrator.YOURDOMAINDesktopWCusers.csv" # Files of users information (First name, Last name, Sam account name, Email address)
$WCEmailFile = "C:UsersAdministrator.YOURDOMAINDesktopWCWCEmail.docx" # File containing welcome email message

import-csv -path $UsersFilePath | foreach {

$Name = ($_.GivenName + " " + $_.LastName)
$UserPrincipalName = ($_.SamAccountName + ”@yourdomain.com”)
$UserPassword = Get-Random -maximum 20000 -Minimum 100
$UserPassword = "@" + "user" + $UserPassword.ToString()
#Create user in Students OU

new-aduser -name $Name -enabled $true -GivenName $_.GivenName –surname $_.lastName -accountpassword (convertto-securestring $UserPassword -asplaintext -force) -changepasswordatlogon $true -samaccountname $_.SamAccountName –userprincipalname $UserPrincipalName -EmailAddress $_.EmailAddress -Path 'OU=Students,DC=yourdomain,DC=com' -ErrorAction Stop

$WCEmailContent = Format-Email -WCEmailContent (Get-Content $WCEmailFile) -UserPrinciPalName $UserPrincipalName -UserPassword $UserPassword

Send-Email -Email $_.EmailAddress -Credential $Credential -WCEmailContent $WCEmailContent

Write-Host "User Created: $Name"
}

### End of main program
      

ステップ 2。

昇格した権限で PowerShell を開き、ステップ 1 で作成したスクリプト ファイルを実行します。

スクリプトの実行が正常に完了すると、ユーザーはすぐにドメインにログインできます。アカウント作成は Active Directory Users and Computers コンソールで確認し、Send-MailMessage cmdlet の CC フィールドを使ってアカウント作成に関する通知をメールで送信できます。

最近の投稿をチェックして、AD に追加された新しいユーザーを過去 24 時間以内に見つける方法 と、PowerShell を使って資格情報をメールで送信する方法を学んでください。How-to: Export Specific Users from Active Directory も試してみるとよいでしょう。AD ユーザーを CSV にエクスポートするよう頻繁に依頼されている場合に特に役立ちます。

スクリプトの機能を改善できるよう、ぜひコメントでご提案をお寄せください。

共有する

もっと詳しく

著者について

Asset Not Found

Karim Buzdar

サポートエンジニア

ITエンジニアであり、サーバー インフラストラクチャ分野の Microsoft Certified Solutions Associate (MCSA) でもあります。技術著者として、Karim は Microsoft Directory Services と PowerShell に注力しています。