毎年、教育機関では何百人もの学生が入学します。その結果、機関のシステムエンジニアは、各学生に対して AD アカウントを作成し、その後、学生にユーザー名とパスワードを手作業で知らせる必要があるため、通常より多くの時間と労力がかかります。
このステップバイステップのガイドは PowerShell スクリプト作成の力を借りて、システムエンジニアの負担を少し軽くします。スクリプトを使うことで、CSV ファイルから AD ユーザーアカウントを作成し、ランダムなパスワードを割り当てたうえで、歓迎メールで新入生にユーザー名とパスワードを送信できます。
次の cmdlet をスクリプト内で使用しました。詳細については、各 cmdlet をクリックしてください。
- Import-CSV(ユーザー詳細をインポートするため)
- Get-Credential(メールの資格情報を取得するため)
- Get-Random(パスワードを生成するため)
- New-ADUser(新しい AD ユーザーを作成するため)
- Get-Content(ファイルからメールの内容を読み取るため)
- Send-MailMessage(ユーザーにメールを送信するため)
新しいユーザーに認証情報(クレデンシャル)付きのメールを送るために、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 にエクスポートするよう頻繁に依頼されている場合に特に役立ちます。
スクリプトの機能を改善できるよう、ぜひコメントでご提案をお寄せください。
共有する
もっと詳しく
著者について
Karim Buzdar
サポートエンジニア
ITエンジニアであり、サーバー インフラストラクチャ分野の Microsoft Certified Solutions Associate (MCSA) でもあります。技術著者として、Karim は Microsoft Directory Services と PowerShell に注力しています。