最近Microsoft 365の管理者になった私です。
ユーザーのパスワードを一括変更(リセット)しようと思い、Microsoft 365 管理センターから作業しようと思ったのですが、ユーザー数を40くらい選択すると[パスワードのリセット]がグレーアウトしてクリックできません。
ユーザーを小分けにして複数回実施するのも面倒です。
調べてみるとPowershellでユーザーのパスワードを一括変更できることを知りました。
ということで早速やってみました。
環境
- Windows10 Pro 64bit(バージョン20H2)
- PowerShell バージョン:5.1.19041.1023
123456789101112PS C:\WINDOWS\system32> $PSVersionTableName Value---- -----PSVersion 5.1.19041.1023PSEdition DesktopPSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}BuildVersion 10.0.19041.1023CLRVersion 4.0.30319.42000WSManStackVersion 3.0PSRemotingProtocolVersion 2.3SerializationVersion 1.1.0.1
事前準備
今回の作業に必要なコマンドレットをPowerShellに2つ追加します。
1つ目
Install-Module -Name MSOnline を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
PS C:\WINDOWS\system32> Install-Module -Name MSOnline 続行するには NuGet プロバイダーが必要です PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGet プロバイダーが必要です。NuGet プロバイダーは 'C:\Program Files\PackageManagement\ProviderAssemblies' または 'C:\Users\[ユーザー名]\AppData\Local\PackageManagement\ProviderAssemblies' に配置する必要があります。'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' を実行して NuGet プロバイダーをインストールすることもできます。今すぐ PowerShellGet で NuGet プロバイダーをインストールしてインポートしますか? [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y 信頼されていないリポジトリ 信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSReposit ory コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery' からモジュールをインストールしますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y PS C:\WINDOWS\system32> |
2つ目
Install-Module -Name AzureAD を実行します。
1 2 3 4 5 6 7 8 |
PS C:\WINDOWS\system32> Install-Module -Name AzureAD 信頼されていないリポジトリ 信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSReposit ory コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery' からモジュールをインストールしますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y PS C:\WINDOWS\system32> |
パスワード一括変更
一括変更用CSVファイルの用意
ユーザー名(userPrincipalName)とパスワード(NewPassword)を入力したCSVファイルを用意します。
1 2 3 4 5 6 7 8 9 10 11 |
userPrincipalName,NewPassword user001@example.co.jp,P@ssw0rd1 user002@example.co.jp,P@ssw0rd2 user003@example.co.jp,P@ssw0rd3 user004@example.co.jp,P@ssw0rd4 user005@example.co.jp,P@ssw0rd5 user006@example.co.jp,P@ssw0rd6 user007@example.co.jp,P@ssw0rd7 user008@example.co.jp,P@ssw0rd8 user009@example.co.jp,P@ssw0rd9 user010@example.co.jp,P@ssw0rd10 |
ファイル形式は、CSV UTF-8(コンマ区切り)です。ファイル形式注意します。
一括変更実行
準備ができたらさっそく実行してみます。
- PowerShellでMicrosoft 365に接続する
123456PS C:\WINDOWS\system32> Connect-MsolServicePS C:\WINDOWS\system32> Connect-AzureADAccount Environment TenantId TenantDomain AccountType------- ----------- -------- ------------ -----------admin@example.co.jp AzureCloud XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX example.co.jp User
接続時には画像のように、サインインのためのウィンドウが表示されるのでユーザー名とパスワードを画面に従って入力し、サインインします。
- CSVファイルの内容で一括変更する
ファイルを指定して、スクリプトを実行します。
ファイルパスの指定が面倒な場合は、CSVファイルが存在する場所のアドレスバーに”PowerShell”と入力すると、その場所に移動した状態でPowerShellが起動します。
12345# ログイン時にパスワード変更を要求しない場合PS C:\WINDOWS\system32> Import-Csv -Path [ファイルパス] | ForEach-Object {Set-MsolUserPassword -UserPrincipalName $_.UserPrincipalName -NewPassword $_.NewPassword -ForceChangePassword $false}# ログイン時にパスワード変更を要求する場合PS C:\WINDOWS\system32> Import-Csv -Path [ファイルパス] | ForEach-Object {Set-MsolUserPassword -UserPrincipalName $_.UserPrincipalName -NewPassword $_.NewPassword -ForceChangePassword $true}
今回は、ユーザーがログイン時にパスワード変更を要求されないように、”ForceChangePassword $false”で実行しました。 - ユーザーがログイン時にパスワード変更を要求されるか確認する
12345678910PS C:\WINDOWS\system32> Get-AzureADUser | Select UserPrincipalName,DisplayName,@{Label="ForceChangePasswordNextLogin";Expression={($_.PasswordProfile | ForEach-Object {$_.ForceChangePasswordNextLogin})}}UserPrincipalName DisplayName ForceChangePasswordNextLogin----------------- ----------- ----------------------------user001@example.co.jp ユーザー1user002@example.co.jp ユーザー2user002@example.co.jp ユーザー3user002@example.co.jp ユーザー4user002@example.co.jp ユーザー5~以下省略~”ForceChangePassword $false”で一括変更したので、”ForceChangePasswordNextLogin”は空白になっています。
仮に、”ForceChangePassword $true”で実行した場合には、”ForceChangePasswordNextLogin”にtrueが付きます。 - Microsoft 365への接続を切断する
1PS C:\WINDOWS\system32> Disconnect-AzureAD
以上でパスワードの一括変更は完了です。
コメント