Risposte:
Ciò può essere ottenuto con il comando DOS / Batch
nome utente net user
Se fossi su un dominio, dovrai aggiungere lo switch /Domain
. Nel tuo caso, basta inserire il nome utente.
Questo elencherà i dettagli più importanti di tale account, inclusa la data di scadenza della password dell'utente.
Se stai inseguendo lo stesso problema che ho avuto in passato, gli utenti vogliono un migliore avviso su quando la loro password scadrà, specialmente quando sono lontani da un tipico PC. Di seguito è riportato lo script che eseguo ogni 72 ore (3 giorni) per inviare avvisi via e-mail.
# © 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 = "admin@example.com"
$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)
}
Imposta queste quattro linee di configurazione in modo appropriato per il tuo ambiente. Modificare altre parti se necessario.
PS potrebbe lamentarsi se lo script non è firmato. Ho firmato il mio utilizzando (ho un certificato di firma del codice):
Set-AuthenticodeSignature PasswordBot.ps1 @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Quindi ho creato una semplice attività pianificata, si attiva ogni 72 ore, l'azione deve essere eseguita C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
con argomento C:\Path\To\PasswordBot.ps1
.
Nota: il computer su cui viene eseguito lo script deve essere un membro del dominio e deve essere installato il "Modulo Active Director per Windows PowerShell". È possibile eseguire start /wait ocsetup ActiveDirectory-PowerShell
su qualsiasi server per installarlo o trovarlo nell'elenco Funzionalità in Windows 7 (potrebbe essere richiesto RSAT, non ricordo ora).