PowerShellで一括処理を

派遣先の大学では、これまでオンプレミスで運営していたEメールを、去年の8月からOffice265のメールに移行しました。それで、新規作成時にPowerShellを使って、
一部の設定が必要となっています。

以前、バッチ処理のスクリプトを作っていたのですが、3月に教職員の入替があるので、一括処理のバッチの検討を始めました。

PowerShellは、去年から使い始めたばかりで、知らないことだらけですが、いろいろとできますね。配列が使えて、ループも可能なので、複数のアカウントを一括処理が可能です。さらに、CSVファイルからリストを取り込むことの可能でした。

ということで、EmailのリストをCSVとして読み込んで、ループで処理する、なんてスクリプトが簡単に組めます。なお、Emailのリストは、ヘッダが無いことを想定して、CSVファイルの取り込みで-Header オプションを使ってみました。それと、数値を文字列にするには、[string]count としないとエラーになります。これくらいで使えるのは便利かも。

#
# list.txtに格納されたEmailアドレスを読み込む
#
$array_emails = Import-Csv list.txt -Header "Email_Address"

#
# foreachによりループ処理
#
$count = 0
foreach( $view in $array_emails) {

  $Email = $view.Email_Address
  .... (ここに、設定のコマンド)
  Write-Host "$Email を設定"
  $count = $count +1
}


$message = [string]$count + "件、設定しました。"
Write-Host $message