コンピューターの管理コンソールまたはコマンドラインのいずれかから、ユーザーのパスワードの有効期限を確認する方法はありますか?
注:ドメインの一部ではないサーバーについて、この質問をします。
これは、DOS/Batchコマンドで実行できます。
ネットユーザーのユーザー名
ドメインを使用している場合は、スイッチを追加する必要があります/Domain
。あなたのケースでは、単にユーザー名を挿入します。
これにより、ユーザーパスワードの有効期限など、そのアカウントの最も重要な詳細が一覧表示されます。
私が過去に経験したのと同じ問題を追いかけている場合、ユーザーは、パスワードがいつ期限切れになるかについて、特に一般的なPCから離れているときに、より良い警告を求めています。以下は、警告を電子メールで送信するために72時間(3日)ごとに実行するスクリプトです。
# © 2011 Chris Stone, Beerware Licensed
# Derived from http://www.jbmurphy.com/2011/09/22/powershell © 2011 Jeffrey B. Murphy
import-module ActiveDirectory
$warningPeriod = 9
$emailAdmin = "[email protected]"
$emailFrom = "PasswordBot." + $env:COMPUTERNAME + "@example.com"
$smtp = new-object Net.Mail.SmtpClient("mail.example.com")
$maxdays=(Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays
$summarybody="Name `t ExpireDate `t DaysToExpire `n"
(Get-ADUser -filter {(Enabled -eq "True") -and (PasswordNeverExpires -eq "False")} -properties *) | Sort-Object pwdLastSet | foreach-object {
$lastset=Get-Date([System.DateTime]::FromFileTimeUtc($_.pwdLastSet))
$expires=$lastset.AddDays($maxdays).ToShortDateString()
$daystoexpire=[math]::round((New-TimeSpan -Start $(Get-Date) -End $expires).TotalDays)
$samname=$_.samaccountname
$firstname=$_.GivenName
if (($daystoexpire -le $warningPeriod) -and ($daystoexpire -gt 0)) {
$ThereAreExpiring=$true
$subject = "$firstname, your password expires in $daystoexpire day(s)"
$body = "$firstname,`n`nYour password expires in $daystoexpire day(s).`nPlease press Ctrl + Alt + Del -> Change password`n`nSincerely,`n`nPassword Robot"
$smtp.Send($emailFrom, $_.EmailAddress, $subject, $body)
$summarybody += "$samname `t $expires `t $daystoexpire `n"
}
}
if ($ThereAreExpiring) {
$subject = "Expiring passwords"
$smtp.Send($emailFrom, $emailAdmin, $subject, $summarybody)
}
これらの4つの構成行を環境に合わせて設定します。必要に応じて他のパーツを修正します。
PSは、スクリプトが署名されていないと文句を言うかもしれません。私は次の方法で自分の署名をしました(私はコード署名証明書を持っています):
Set-AuthenticodeSignature PasswordBot.ps1 @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
次に、シンプルなスケジュールタスクを作成し、72時間ごとにトリガーします。アクションは、C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
を引数C:\Path\To\PasswordBot.ps1
で実行することです。
注:このスクリプトを実行するコンピューターは、ドメインのメンバーである必要があり、「Windows PowerShell用のActive Directorモジュール」がインストールされている必要があります。任意のサーバーでstart /wait ocsetup ActiveDirectory-PowerShell
を実行してインストールするか、Windows 7の[機能]リストで見つけることができます(RSATが必要な場合があります。今は覚えていません)。