今回は、Powershellにて、ユーザーのパスワードーの有効期限を無期限に設定する方法についてご紹介したいと思います。
- 事前準備 : Windows PowerShell の起動と接続
- 指定したユーザーのパスワードの有効期限を無期限に設定
- パスワードを無期限化するユーザーの一覧を CSV ファイルで作成する
- 複数ユーザーのパスワードの有効期限を一括で無期限に設定
事前準備 : Windows PowerShell の起動と接続
下記公開情報の [1. Microsoft Graph PowerShell のインストール] を参考に、Microsoft Graph PowerShell 用モジュールのインストールをしてから実行してください。
※ すでに本モジュールのインストールが完了している場合、再インストールは不要ですので、後述の <Windows PowerShell への接続> の手順からご実施ください。
Windows PowerShell への接続
Microsoft Graph PowerShell 用モジュールのインストールが完了したら、以下の手順にて、Windows PowerShell へ接続してください。
1. Windows PowerShell を右クリックして [管理者として実行] で起動します。
2. 以下のコマンドレットを実行し、管理者ユーザーの ID とパスワードを入力します。
【コマンドレット】
Connect-MgGraph -Scopes "User.ReadWrite.All"
3. 以下のコマンドレットを実行し、モジュールをインポートします。
【コマンドレット】
Import-Module -Name Microsoft.Graph.Users
指定したユーザーのパスワードの有効期限を無期限に設定
以下のコマンドレットを実行して、特定のユーザーのパスワード無期限化を実施します。
【コマンドレット】
Update-MgUser -UserId "<ユーザー ID>" -PasswordPolicies DisablePasswordExpiration
【実行例】
Update-MgUser -UserId user01@contoso.com -PasswordPolicies DisablePasswordExpiration
指定したユーザーのパスワードの無期限化設定を確認
以下のコマンドレットを実行して、ユーザーのパスワード有効期限が無期限に設定されているか確認します。
【コマンドレット】
Get-MGuser -UserId "<ユーザー ID>" -Property UserPrincipalName, PasswordPolicies | Select-Object UserPrincipalName,@{
N="PasswordNeverExpires";E={$_.PasswordPolicies -contains "DisablePasswordExpiration"}}
【実行例】
Get-MGuser -UserId user01@contoso.com -Property UserPrincipalName, PasswordPolicies | Select-Object UserPrincipalName,@{
N="PasswordNeverExpires";E={$_.PasswordPolicies -contains "DisablePasswordExpiration"}}
[PasswordNeverExpires] が Ture の場合は、無期限化が設定されており、False の場合は、無期限化は設定されていません。
対象とするユーザーが複数いる場合には、以下の手順で実施します。
パスワードを無期限化するユーザーの一覧を CSV ファイルで作成する
【フォーマット】
UserPrincipalName
留意事項
・編集するファイルは、メモ帳、もしくは Excel にて作成いただき、ファイルを保存する際に、CSV ファイル形式で保存します。
・ Excel ファイルにて作成する場合は、保存する際の形式を [CSV UTF-8 (コンマ区切り) ] と指定してください。
・エラー発生時のリスク回避のため、1 ファイルにつき 1,000 名以内に CSV ファイルを分割して作業いただくことをお勧めします。
複数ユーザーのパスワードの有効期限を一括で無期限に設定
【コマンドレット】
$CSV = Import-CSV -Path "<作成した CSV ファイルのパス>"
$params.passwordPolicies = "DisablePasswordExpiration"
$CSV | ForEach-Object {Update-Mguser -UserId $_.UserPrincipalName -BodyParameter $params}
【実行例】
$CSV = Import-CSV -Path "C:\temp\UserList.csv"
$params.passwordPolicies = "DisablePasswordExpiration"
$CSV | ForEach-Object {Update-Mguser -UserId $_.UserPrincipalName -BodyParameter $params}
※ 上記実行例では、C ドライブ直下の temp フォルダーに UserList.csv ファイルを出力しています。
※ 読み込む CSV ファイルの項目名がUserPrincipalName の場合です
ユーザーのパスワードの無期限化設定を確認
以下のコマンドレットを実行して、ユーザーのパスワード有効期限が無期限に設定されているか確認します。
【コマンドレット】
$CSV = Import-CSV -Path "<作成した CSV ファイルのパス>"
$CSV | ForEach-Object {Get-MgUser -UserId $_.UserPrincipalName -Property UserPrincipalName,PasswordPolicies} | select UserPrincipalName,PasswordPolicies | Export-Csv <出力先のパスとファイル名> -NoTypeInformation -Encoding UTF8
【実行例】
$CSV = Import-CSV -Path "C:\temp\UserList.csv"
$CSV | ForEach-Object {Get-MgUser -UserId $_.UserPrincipalName -Property UserPrincipalName,PasswordPolicies} | select UserPrincipalName,PasswordPolicies | Export-Csv <出力先のパスとファイル名> -NoTypeInformation -Encoding UTF8
※ 上記実行例では、C ドライブ直下の temp フォルダーに UserList.csv ファイルを出力しています。
[PasswordNeverExpires] が Ture の場合は、無期限化が設定されており、False の場合は、無期限化は設定されていません。