3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ADのユーザー情報にメールアドレス登録する作業をPowerShellで自動化した際の話

Posted at

同僚からの相談内容

社内のActiveDirectoryを運用している同僚からこんな相談を受けました。

  • 総務部門にメールで社員の情報(メールアドレスなど)を聞いて、ADのユーザー情報に付与している。
  • しかし、必須でない項目ということもあり、ついつい登録を忘れてしまうことがある。
  • 忘れなくても、入力ミスなどで誤った情報が入力されている場合がある。
  • そもそも総務から提供されている情報が誤っている場合もあり、その場合は再登録が必要。
  • こんな単純作業もうしたくない。スクリプト組んで自動化してくれ。

どうやって自動化するか

現在は以下のような運用をしています。
AD担当者が__聞いて__、総務が__答えて__、AD担当者が__登録する__という
人間が介在する作業が多くある状態です。
image.png

それを以下のフローにしたいと思います。
このフローなら__人間が介在する作業は総務担当者のメールアドレス入力だけ__になります。
人力を最小限に抑えることが出来るので、__登録ミスが発生するリスクは最小限__になりそうです。
また、PowerShellをタスクスケジューラで組み込めば忘れずに作業してくれます。
image.png

実際の流れ

それでは、上記のフロー通りに自動化していこうと思います。

CSVファイルにメールアドレスを記入する

まず、総務担当者に以下のような感じでCSVを作成してもらいます。
A列はADのユーザー名、B列はメールアドレスです。

image.png

CSVの内容をADサーバーに登録するPowerShellを作成する

PowerShellスクリプトのコードは以下の通りです。
CSVファイル名や保存パス、ドメイン名などは各自の環境のものを入れてください。
このスクリプトファイルをWindowsサーバー上で日次で定期起動させれば自動化の完成です。

# ADユーザー名とUIDを読み込む
# CSV読み込んで、配列に保存。
$user_array = @()
$uid_array = @()

$file_name = '<CSVのファイル名>'
$folder_path = '<CSVが保存されているディレクトリ>'
$file_path = $folder_path + $file_name
# 読み込むファイルがS-JISの場合は、DefaultでOK
$csv = Import-Csv -encoding Default -Path $file_path
# 配列にぶち込む
foreach($line in $csv) {
  $user_array += $line.AD_User
  $uid_array += $line.mail
}

# メールを登録していく
for ($i=0; $i -lt $user_array.Length; $i++){

    #AD上で実行したいコマンドを文字列に纏める
    $cm1 = 'Set-ADUser -Identity '
    $cm2 = $user_array[$i]
    $cm3 = ' -Replace @{ mail = '
    $cm4 = '"' + $uid_array[$i] + '" }'
    $cm = $cm1 + $cm2 + $cm3 + $cm4 #AD上で実行したいコマンドの文字列


    #Invoke-Command <ドメイン名> -ScriptBlockでADを遠隔実行できる。
    #invoke-expressionで、文字列をコマンドとして実行する
    #args[0]には$cmが引数として渡される
    Invoke-Command <ドメイン名> -ScriptBlock {invoke-expression $args[0]} -ArgumentList $cm
}

今回はメールアドレスの入力にしていますが、
電話番号やWebページなど、色々な項目に対して変更することが可能です。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?