この記事では、Active Directory ユーザーを一括でパスワード無期限にする方法を紹介しています。
総務省がパスワードの定期変更は不要と方針を変更しました。ユーザーはパスワードの定期変更がめんどくさいので簡単なパスワードを使いまわしてしまいます。
結果的に、パスワードの定期変更で使いまわせるような覚えやすくて簡単なパスワードになっていくわけですね。これが総務省がパスワード定期変更から不要に方針を変更した理由です。
詳細はこちらの記事「総務省が「パスワードの定期変更は不要」に転換!安全性を高めるパスワードの作り方は?」でご確認ください。
さて、各企業では総務省の方向転換に対応するための施策を検討中だとわたしは考えています。この記事ではActiveDirectoryを使用している環境で、ユーザのパスワードを一括で無期限に変更する方法を紹介しますので、パスワード無期限を検討している方の参考になると思います。
使うコマンド
Import-CSV と Set-ADUser を組み合わせて一括でパスワード無期限に設定を変更。具体的にどこが変わるのかというと、ADユーザーのパスワードを無期限にするチェックボックスがつきます。
パスワード無期限をはずす
Set-ADUser -Identity hogefuga -PasswordNeverExpires $false
パスワード無期限をつける
Set-ADUser -Identity hogefuga -PasswordNeverExpires $true
実行前の状態を確認
2人同時に設定を変更するテストをします。2人ともパスワードを無期限にするチェックボックスはついていません。
CSVファイルを用意する
以下のようなCSVファイルを作成します。ここでは test.csv とします。1列目はSamAccountNameを入力してください。正確には Get-ADUser -Identity で指定できる値であれば何でも良いです。
"test1","-1"
"test2","-1"
PowerShell スクリプトファイル(.ps1)を用意する
PowerShellスクリプトファイルを作成します。ここでは test.ps1とします。
import-csv -Encoding Default test.csv -Header 'user_id', 'pas' | Foreach-Object {
if($_.pas -eq 0) {
$passflg=$false
} else {
$passflg = $true
}Get-ADUser -Identity $_.user_id | Set-ADUser -PasswordNeverExpires $passflg;
};
ドメインコントローラーにログインしてPowerShellを起動する
ドメインコントローラーにログインしてください。その後、PowerShellを管理者として起動します。
スクリプトファイルを実行する
あらかじめ作っておいたCSVファイルとPS1ファイルを置いてあるフォルダに移動します。
test.ps1 を実行します。
パスワード無期限になったか確認
2人ともパスワードを無期限にするチェックボックスにチェックがつきました。
おわりに
いかがだったでしょうか?複数ユーザーを一括でパスワード無期限に設定することができました。
運用的にGPOやPSOが使えない場合もあると思います。わたしの場合は少々特殊な環境でしたので、この方法でしかパスワード無期限を実現できませんでした。GPOかPSOで実現できない場合はこの方法をオススメします。
P.S.
CSVファイルの2列目を "0" にすればパスワード無期限チェックを外すことができます。
もし、この方法ではやりたいことができないのであれば、teratailで質問してしまうのも良いと思います。
エンジニア特化の質問サイトなので、手っ取り早く自分に合った回答をもらえると思います。