Як я можу визначити, коли термін дії даного користувача закінчиться?


16

Чи є спосіб або з консолі управління комп'ютером, або з командного рядка визначити, коли термін дії пароля користувача закінчується?

Примітка. Я задаю ці запитання серверу, який не входить до домену.


Відповіді:


22

Цього можна досягти командою DOS / Batch

чисте ім’я користувача

Якщо ви були на домені, вам потрібно буде додати комутатор /Domain. У вашому випадку просто вставте ім’я користувача.

Тут буде вказано найважливіші дані цього облікового запису, включаючи дату закінчення терміну дії пароля користувача.


Як додаткова інформація: Ви також можете встановити дату закінчення терміну придатності за допомогою цієї команди, якщо вам це потрібно. Дивіться інформацію про "чистий користувач / допомога" для всієї інформації
LumenAlbum

1
І швидкий і брудний злом для вирізання та вставки, просто використовуйте: чистий користувач% username%
Codek

1
Я зробив чистий користувач / домен <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.