大量のM365アカウントを作成する機会があった。手作業で消すのは時間がかかるためPowershellスクリプト化した。ただし、廃止予定のMSOnline版なので、Graph版も作成予定。Graph版はこちらなお、本業はプログラマではないので構文とかは素人。
作成するユーザの一覧のcsvファイルを用意
作成するユーザ一覧の csv ファイルを下記の項目で、任意のフォルダに account.csv とファイル名で作成する。
ID | 氏名 | passwd |
aabbcc | 山田 太郎 | 12345678 |
ddeeff | 山田 花子 | 9876543 |
下記のパワーシェルスクリプトを作成して .ps1 ファイルとして保存し、account.csv と一緒のフォルダに置く。作成されるユーザは下記の項目設定がされるようにする。
・表示名 … csv の氏名を設定
・氏 … csv の氏名から取得
・名 … csv の氏名から取得
・ライセンスの割り当て(Get-MsolAccountSkuで割り当てたいライセンスを調べておく)
・強力なパスワード要件はオフとしている。
・初回ログイン時パスワード強制変更するようにする。
※ スクリプト内の $Dom 変数や $sku 変数はご利用環境に合わせて編集してください。
スクリプト内でAzureADに接続する時に使うクレデンシャルファイルはこちらを参考に作っておく。
# 作業フォルダの定義
$scriptname = $MyInvocation.MyCommand.Name
$path = $PSScriptRoot
# 作業フォルダに移動
cd $path
#ログ取得
if (!(Test-Path .\log)){
mkdir .\log
Write-Output ("logフォルダを作成しました。")
}
$logfile = ".\log\" + $scriptname +"_"+ (Get-date -Format "yyyy-MMdd-HHmmss") + ".log"
Start-Transcript $logfile -Append
# AzureAD 接続
$cre = Import-Clixml -path C:\work\cred.xml
Connect-MsolService -Credential $cre
# ユーザのCSVリストを取得
$Lists = Import-Csv -Encoding Default ".\account.csv"
#UPNのドメイン部分の定義
$Dom = "@tec-memo.com"
#割り当てライセンス定義
$Sku1 = "xxxxxxxOFFICESUBSCRIPTIONXXXXXXX"
$Sku2 = "xxxxxxx:STANDARDWOFFPACKXXXXXXX"
$count = 0
# フォルダ作成
foreach($l in $Lists){
$count ++
#UPN定義
$Upn = $l.ID + $Dom
New-MsolUser -DisplayName ($l.ID + " " + $l.氏名) `
-FirstName ($l.氏名.split(" ")[0]) `
-LastName ($l.氏名.split(" ")[1]) `
-UserPrincipalName $Upn `
-UsageLocation "JP" `
-Password $l.passwd `
-LicenseAssignment $Sku1,$Sku2 `
-StrongPasswordRequired $false `
-ForceChangePassword $true
Write-Output("[" + $count +"]/[" + $Lists.Count + "] " + $l.ID + " を登録しました。")
}
# ログ停止
Stop-Transcript
コメント