アリスです。
Windows10でパスワードの有効期限を無期限にする方法について説明します。
他のサイトでもパスワードの有効期限を無期限にする方法がかかれていますが、どれも手動での設定です。
ユーザが一人しかいないならそれでいいですが、ユーザが複数いる場合、しかも100人以上いる場合は、いちいち手動でなんかやっていられませんよね。
ここでは自動で設定する方法について紹介します。私が探した限り、ここまで懇切丁寧に書かれた記事はありませんでした。
PowerShellスクリプトのコマンド
Powershellを開きます。PowerShellはWindowsに標準でインストールされています。
パスワードを無期限にするには、PowerShellから下記のコマンドを打ちます。ユーザ名には、パソコンのアカウント名として存在する名前を入れてください。
wmic useraccount where “Name=’ユーザ名'” set PasswordExpires=FALSE
FALSEの部分をTRUEにすると、パスワード無期限設定を解除できます。
ユーザ全員のパスワードを無期限に設定する
上記コマンドを紹介しているサイトもたくさんありますが、、上記のコマンドが分かっても意味がないです。
やりたいことは、現在登録されている複数ユーザの全員のパスワードを無期限にする方法です。
順番に説明します。
登録されているユーザデータをエクスポートする
登録されているユーザがわからないことには話になりません。下記の方法で全ユーザのデータを取得します。
スタートメニューで右クリックし、コンピュータの管理を開きます。
画面が開くと、ローカルユーザとグループの項目がありますので、それを開きます。
ユーザのところで右クリックすると、エクスポートするメニューがありますので、それを選択します。
適当な名前のテキストデータで保存します。今回はAllUser.txetで保存。
保存したテキストデータを開きます。このときメモ帳ではなく、VS Codeやサクラエディタといったテキストエディタで開きましょう。
なぜかというと、あとで紹介するプログラムで使うためにデータを加工する必要があるからです。メモ帳では加工ができません。
では、加工の方法を説明します。先ほど取得した全ユーザのデータのテキストの中身を見ていただくとわかるのですが、最初に名前があり、そのあとタブでスペースがあり、次の項目が表示されていると思います。そしてまたタブのスペースという具合になっていると思います。
この中で必要なのは、名前だけなので、それ以外を消します。消すには正規表現を使って、空文字に置き換えます。
まず、テキストエディタで置換メニューを表示します。正規表現での置き換えを許可するチェックをつけましょう。そして、置き換え前の文字列に「\t.*$」を入力します。そして、置き換え後の文字列には何も設定しません。
できたら置き換えをしてください。各行の先頭の名前以外が削除されたと思います。
PowerShellスクリプトを作って一括設定する
PowerShellスクリプトの中身のプログラムは下記のとおりです。
先ほど作った全ユーザのテキストデータを読み込み、順番にパスワードを無期限設定にするというプログラムです。
下記のプログラムを拡張子 「.ps1」のファイルで保存します。今回はパスワード無期限.ps1という名前のスクリプトファイルを作成。
$filepath = $args[0] $enc = [Text.Encoding]::GetEncoding("Shift_JIS") $file = New-Object System.IO.StreamReader($filepath, $enc) while (($user = $file.ReadLine()) -ne $null) { wmic useraccount where "Name='$user'" set PasswordExpires=FALSE } Write-Host("全ユーザのパスワードを無期限に設定しました") $file.Close()
それではいよいよ実行です。PowerShellを開き、上記のスクリプトと、ファイル名を指定します。スクリプト名とファイル名の間に空白をいれてください。
パスワード無期限.ps1 AllUser.txt
すると、PowerShellスクリプトで、AllUser.txt内に記載されているユーザ名を順番に読み取り、自動で設定されていきます。一人の設定に2秒ぐらいかかるので、100人いれば200秒かかりますが、自動で設定されます。