Как узнать, когда истечет срок действия пароля данного пользователя?

16

Есть ли способ из консоли управления компьютером или из командной строки определить, когда истечет срок действия пароля пользователя?

Примечание: я задаю эти вопросы для сервера, который не является частью домена.

Aheho
источник
Пожалуйста, смотрите справочный центр .
Майкл Хэмптон

Ответы:

22

Это может быть достигнуто командой DOS / Batch

чистое имя пользователя

Если бы вы были в домене, вам нужно было бы добавить переключатель /Domain. В вашем случае просто введите имя пользователя.

Это перечислит наиболее важные детали этой учетной записи, включая дату истечения срока действия пароля пользователя.

LumenAlbum
источник
Так же, как дополнительная информация: Вы также можете установить дату истечения срока действия с помощью этой команды, если вам нужно сделать это. Смотрите "net user / help" для всей информации
LumenAlbum
1
И быстрый и грязный хак для вырезки и вставки, просто используйте: net user% username%
Codek
1
Я сделал net user / domain <username>, и он сказал: «Имя пользователя не найдено». Это из-за ограничений или политики безопасности домена?
atom88
7

Если вы преследуете ту же проблему, с которой я сталкивался в прошлом, пользователи хотят лучше предупреждать о том, когда истечет срок действия их пароля, особенно когда они находятся за пределами типичного ПК. Ниже приведен сценарий, который я запускаю каждые 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 = "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)
}

Установите эти четыре строки конфигурации в соответствии с вашей средой. Измените другие детали по мере необходимости.

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.

Примечание. Компьютер, на котором выполняется этот сценарий, должен входить в домен и на нем должен быть установлен «Модуль Active Director для Windows PowerShell». Вы можете запустить его start /wait ocsetup ActiveDirectory-PowerShellна любом сервере или найти его в списке функций в Windows 7 (может потребоваться RSAT, я сейчас не помню).

Крис С
источник
Кажется, что это отличный сценарий, но, как вы заметили, его нужно запускать на члене домена. Однако его предпосылка заключается в том, что сервер не является частью домена. Все еще отличный сценарий
LumenAlbum
Может ли этот скрипт быть изменен для работы на сервере, который не является частью домена?
Ахехо