MSOnline と Azure AD Powershell が2024年3月30日に廃止されるらしい。Microsoft Graph PowerShell に移行が必要。パスワード変更する機会があったのでGraphでパスワード変更する機会があったのでメモ。
Graphモジュールインストール(初回のみ)
Powershellを管理者で起動して、Graphモジュールをインストール。5分くらいかかるかも
PS> Install-Module Microsoft.Graph
MgGraphへ接続する。
パスワードを変更するときに権限うんぬんのエラーがでるので何かと思ったら
パスワードを変更するときは接続するときにDirectory.AccessAsUser.All”,”Directory.ReadWrite.All” を付与する必要がある
PS> Connect-MgGraph -Scopes "Organization.Read.All","User.ReadWrite.All","Directory.AccessAsUser.All","Directory.ReadWrite.All"
Welcome to Microsoft Graph!
パスワード変更
パスワードを20240217 と変更する。UserIDにはUPNを指定する。
PS> Update-MgUser -UserId user@tec-memo.com -PasswordProfile @{ "Password" = 20240217 }
パスワード無期限、初回ログイン時にパスワード強制変更、複雑なパスワード要求OFFなどいろいろつける場合
PS> Update-MgUser -UserId user@tec-memo.com -PasswordPolicies "DisablePasswordExpiration,DisableStrongPassword" -PasswordProfile @{ "Password" = 20240217 ; "forceChangePasswordNextSignIn" = $true}
一括処理
大量のユーザアカウントを一括初期化する機会があったのでPowershellでスクリプト化した。下記のCSVを作成して、スクリプトと同じフォルダにaccout.csvというファイル名で配置して実行する。なおパスワードは”20240217″ に初期化している。パスワードは適宜編集。
ID |
aaa@tec-memo.com |
bbb@tec-memo.com |
ccc@tec-memo.com |
# 作業フォルダの定義
$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-MgGraph -Scopes "User.ReadWrite.All"
Import-Module -Name Microsoft.Graph.Users
# パスワード変更対象者のCSVリストを取得
$Lists = Import-Csv -Encoding Default ".\account.csv"
$count = 0
foreach($l in $Lists){
$count ++
Update-Mguser -UserID $l.ID -PasswordProfile @{ "Password" = "20240217" ; "forceChangePasswordNextSignIn" = $true}
Write-Output("[" + $count +"]/[" + $Lists.Count + "] " + $l.ID + " のパスワードを変更しました。")
}
# Graph から切断
Disconnect-MgGraph
# ログ停止
Stop-Transcript
コメント