チャブーンです。
このようなスクリプトを実行すればいいと思います。基本的にはADSIのWinNTプロバイダのChangePasswordメソッドを使います。
なお、Read-Hostの -MaskInputは正常動作しないので、-AsSecureStringで値を取り込んでから平文変換する必要があります。
以下などを参考にしてください。
https://10nin.vivaldi.net/2023/10/11/powershellpasswordscript/
#セキュア文字を平文に変える関数です。
function InputPassword($Prompt) {
$Pass = (Read-Host $Prompt -AsSecureString)
$Bpass = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Pass)
$Spass = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($Bpass)
return $Spass
}
#パスワード条件をインプットします。
Write-Host "あなたのアカウント名は $ENV:USERNAME です。"
$OldPassword = InputPassword "現在のパスワードを入力してください"
$NewPassword = InputPassword "新しいパスワードを入力してください"
#アカウントを指定します。
# $MyAccount = [ADSI]"WinNT://LocalHost/$ENV:USERNAME" (これがだめだったようです)
$MyAccount = [ADSI]"WinNT://$ENV:COMPUTERNAME/$ENV:USERNAME"
#パスワードを変更します。パスワード変数は平文である必要があります。
$MyAccount.ChangePassword($OldPassword, $NewPassword)