社畜の所業

社畜の所業

Microsoft365の機能について解説をしていきたいと思います。このブログの情報をご活用いただければ幸いです。たまに他の情報も取り入れていきたいと思います。

※このサイトはPR記事を含みます。

【Microsoft365参考書】パスワードの有効期限を無期限に設定するには?

 

今回は、Powershellにて、ユーザーのパスワードーの有効期限を無期限に設定する方法についてご紹介したいと思います。

 

事前準備 : Windows PowerShell の起動と接続

 

下記公開情報の [1. Microsoft Graph PowerShell のインストール] を参考に、Microsoft Graph PowerShell 用モジュールのインストールをしてから実行してください。

※ すでに本モジュールのインストールが完了している場合、再インストールは不要ですので、後述の <Windows PowerShell への接続> の手順からご実施ください。

 

jpazureid.github.io

 

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"}}

 

 

 

対象とするユーザーが複数いる場合には、以下の手順で実施します。

 

パスワードを無期限化するユーザーの一覧を CSV ファイルで作成する

 

【フォーマット】

UserPrincipalName

user01@contoso.com

user02@contoso.com

user03@contoso.com

 

留意事項

 

・編集するファイルは、メモ帳、もしくは 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 ファイルを出力しています。