Come posso sapere quando scadrà la password di un determinato utente?


Risposte:


22

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.


Proprio come ulteriori informazioni: è anche possibile impostare la data di scadenza tramite questo comando, nel caso in cui sia necessario farlo. Vedi "net user / help" per tutte le informazioni
LumenAlbum

1
E un trucco rapido e sporco per tagliare e incollare, basta usare: net user% username%
Codek

1
Ho fatto net user / domain <nomeutente> e ha detto "Impossibile trovare il nome utente". È a causa di alcune restrizioni o politiche sulla sicurezza del dominio?
atom88,

7

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.execon 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-PowerShellsu qualsiasi server per installarlo o trovarlo nell'elenco Funzionalità in Windows 7 (potrebbe essere richiesto RSAT, non ricordo ora).


Questo sembra essere uno script fantastico, ma come fai notare, deve essere eseguito su un membro del dominio. Tuttavia, la sua premessa è che il server non fa parte di un dominio. Ottima sceneggiatura
LumenAlbum,

Questo script potrebbe essere modificato per funzionare su un server che non fa parte di un dominio?
Aheho,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.