Powershell でMicrosoft365(AzureAD)アカウントを一括登録するスクリプトを作成してみた。

スポンサーリンク

大量の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


コメント

タイトルとURLをコピーしました