Como posso saber quando a senha de um determinado usuário expirará?


16

Existe uma maneira do console de gerenciamento do computador ou da linha de comando para determinar quando a senha de um usuário expirará?

Nota: Estou fazendo essas perguntas para um servidor que não faz parte de um domínio.


Por favor, consulte o centro de ajuda .
Michael Hampton

Respostas:


22

Isso pode ser alcançado pelo comando DOS / Batch

nome de usuário do usuário líquido

Se você estivesse em um domínio, seria necessário adicionar a opção /Domain. No seu caso, basta inserir o nome de usuário.

Isso listará os detalhes mais importantes dessa conta, incluindo a data de validade da senha do usuário.


Apenas como informações adicionais: Você também pode definir a data de validade por este comando, caso precise fazer isso. Veja "net user / help" para todas as informações
LumenAlbum 28/08

11
E um corte rápido e sujo para o corte e colagem, basta usar: net user% username%
Codek

11
Eu criei net user / domain <username> e ele dizia "O nome de usuário não foi encontrado." Isso ocorre devido a alguma restrição ou política de segurança de domínio?
precisa saber é o seguinte

7

Se você está perseguindo o mesmo problema que eu tive no passado, os usuários desejam um aviso melhor sobre quando sua senha expirará, especialmente quando estiverem longe de um PC comum. A seguir, o script que eu executo a cada 72 horas (3 dias) para enviar avisos por email.

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

Defina essas quatro linhas de configuração adequadamente para o seu ambiente. Modifique outras peças conforme necessário.

O PS pode reclamar se o script não for assinado. Assinei o meu usando (tenho um certificado de assinatura de código):

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

Então eu criei uma tarefa agendada simples, dispara a cada 72 horas, a ação é executada C:\Windows\System32\WindowsPowerShell\v1.0\powershell.execom argumento C:\Path\To\PasswordBot.ps1.

Nota: O computador em que este script é executado deve ser um membro do domínio e deve ter o "módulo Active Director para Windows PowerShell" instalado. Você pode executar start /wait ocsetup ActiveDirectory-PowerShellem qualquer servidor para instalá-lo ou encontrá-lo na lista Recursos no Windows 7 (o RSAT pode ser necessário, não me lembro agora).


Este parece ser um script incrível, mas, como você aponta, ele precisa ser executado em um membro do domínio. No entanto, sua premissa é que o servidor não faz parte de um domínio. Ainda ótimo script
LumenAlbum

Esse script pode ser alterado para funcionar em um servidor que não faz parte de um domínio?
Aheho
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.