¿Cómo puedo saber cuándo caducará la contraseña de un usuario determinado?

16

¿Hay alguna forma desde la consola de administración de la computadora o la línea de comando para determinar cuándo caducará la contraseña de un usuario?

Nota: estoy haciendo estas preguntas para un servidor que no es parte de un dominio.

Aheho
fuente
Por favor, consulte el centro de ayuda .
Michael Hampton

Respuestas:

22

Esto se puede lograr con el comando DOS / Batch

nombre de usuario de usuario neto

Si estuviera en un dominio, necesitaría agregar el interruptor /Domain. En su caso, simplemente inserte el nombre de usuario.

Esto enumerará los detalles más importantes de esa cuenta, incluida la fecha de vencimiento de la contraseña del usuario.

LumenAlbum
fuente
Solo como información adicional: también puede establecer la fecha de caducidad a través de este comando, en caso de que necesite hacerlo. Consulte "ayuda / usuario neto" para obtener toda la información
LumenAlbum
1
Y un truco rápido y sucio para cortar y pegar, solo use: net user% username%
Codek
1
Utilicé net user / domain <username> y decía "No se pudo encontrar el nombre de usuario". ¿Esto se debe a alguna política o restricción de seguridad de dominio?
atom88
7

Si está persiguiendo el mismo problema que tuve en el pasado, los usuarios desean una mejor advertencia de cuándo caducará su contraseña, especialmente cuando están lejos de una PC típica. El siguiente es el script que ejecuto cada 72 horas (3 días) para enviar avisos por correo electrónico.

# © 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)
}

Establezca esas cuatro líneas de configuración de manera adecuada para su entorno. Modifique otras partes según sea necesario.

PS puede quejarse si el script no está firmado. Firmé el mío usando (tengo un certificado de firma de código):

Set-AuthenticodeSignature PasswordBot.ps1 @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]

Luego creé una tarea programada simple, se dispara cada 72 horas, la acción es ejecutar C:\Windows\System32\WindowsPowerShell\v1.0\powershell.execon argumento C:\Path\To\PasswordBot.ps1.

Nota: La computadora en la que se ejecuta este script debe ser miembro del dominio y debe tener instalado el "Módulo Active Director para Windows PowerShell". Puede ejecutarlo start /wait ocsetup ActiveDirectory-PowerShellen cualquier servidor para instalarlo, o encontrarlo en la lista de Características en Windows 7 (es posible que se requiera RSAT, no lo recuerdo ahora).

Chris S
fuente
Este parece ser un script increíble, pero como señala, debe ejecutarse en un miembro del dominio. Sin embargo, su premisa es que el servidor no es parte de un dominio. Sigue siendo un gran guión
LumenAlbum
¿Podría modificarse este script para que funcione en un servidor que no es parte de un dominio?
Aheho