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


16

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

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


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

Ответы:


22

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

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

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

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


Так же, как дополнительная информация: Вы также можете установить дату истечения срока действия с помощью этой команды, если вам нужно сделать это. Смотрите "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

Может ли этот скрипт быть изменен для работы на сервере, который не является частью домена?
Ахехо
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.