iT Notes

iT Notes

Центр обмена знаниями по различным it системам.

Скрипт уведомления о смене пароля на PowerShell.

Информирование пользователя, о предстоящем событие смене пароля в windows, штатными средствами не реализовано. Зачастую все узнают по факту, на всплывающее уведомление в юзербаре мало кто обращает внимание. В свое время когда не знал что есть готовые решения http://habrahabr.ru/company/netwrix/blog/161345/

Утянул чей то готовый скрипт и адаптировал его под себя. Скрипт высылает уведомление пользователям, затем генерирует отчет для админов.

Не забывайте добавить ip машины на вашем почтовом сервере в анонимов. Также незабываем настроить выполнения скриптов в powershell.

 

Вот сам скрипт:

 

3 Responses to Скрипт уведомления о смене пароля на PowerShell.

  1. Добрый день. У меня поступила задача – настроить уведомление пользователей о смене пароля, по почте.
    Контроллер домена win server 2008 r2
    Почтовый сервер exchange 2010
    В программировании особо не разбираюсь, только в администрировании. Так что буду очень признателен если поможете
    Вот скрипт

    cls

    # максимальный возраст пароля из AD
    $max_pwd_life = 42

    #Установка срока оповещения
    $max_alert = 3

    Remove-Item pwexpired.txt -ErrorAction SilentlyContinue
    Remove-Item no-email.txt -ErrorAction SilentlyContinue

    # Скрипт проверяет группу kzsk.local\users и посылает уведомления только тем пользователям, кому до истечения срока пароля осталось 3 дня.
    $groups = Get-QADGroupMember ‘kzsk.local\users’
    foreach ($user in $groups)
    {
    $user_name = $user.name
    $user_email = $user.email
    Write-Output $user_name $user_email
    #Transform the DateTime readable
    $user_logon = $user.lastLogon
    Write-Output “Последний вход пользователя: $user_logon”
    $result = $user.passwordage.days
    Write-Output “Пароль последний раз установлен: $result дней назад”
    $pwdnoexpire = $user.PasswordNeverExpires
    Write-Output “Пароль никогда не истекает? $pwdnoexpire”
    $calculation = $max_pwd_life – $result
    #calculate the difference in Day
    if (($calculation -le $max_alert))
    {
    Write-Output “$user_Name необходимо сменить пароль, он истекает через $calculation days.”
    write-output “$user_Name необходимо сменить пароль, он истекает через $calculation days.”
    out-file -filePath “C:\pwexpired.txt”
    $userlist+=$selected_user
    if ($user.email -eq $null)
    {
    Write-Output “$user_name: Не найдено адреса электронной почты для этого пользователя .”
    Write-Output “$user_name: Не найдено адреса электронной почты для этого пользователя .” |
    out-file -filePath “C:\no-email.txt”
    }
    else
    {
    write-output “Направляем электронной сообщение с напоминанием сменить пароль.”
    send-mailmessage -from “No-Reply ” -to $user.email -subject “Ваш пароль истекает через $calculation days” -body “Пожалуйста измените пароль. Вы это можете сделать через веб-форму (https://webmail.mydomain.com).
    По вопросам просьба обращаться в техническую поддержку.

    Техническая поддержка” -smtpServer exchange.kzsk.local
    }
    }
    else
    {
    Write-Output “Пароль еще не истекает”
    }
    Write-Output “——————————————–”
    }cls
    # максимальный возраст пароля из AD
    $max_pwd_life = 42

    #Установка срока оповещения
    $max_alert = 3

    Remove-Item pwexpired.txt -ErrorAction SilentlyContinue
    Remove-Item no-email.txt -ErrorAction SilentlyContinue

    # Скрипт проверяет группу kzsk.local\users и посылает уведомления только тем пользователям, кому до истечения срока пароля осталось 3 дня.
    $groups = Get-QADGroupMember ‘kzsk.local\users’
    foreach ($user in $groups)
    {
    $user_name = $user.name
    $user_email = $user.email
    Write-Output $user_name $user_email
    #Transform the DateTime readable
    $user_logon = $user.lastLogon
    Write-Output “Последний вход пользователя: $user_logon”
    $result = $user.passwordage.days
    Write-Output “Пароль последний раз установлен: $result дней назад”
    $pwdnoexpire = $user.PasswordNeverExpires
    Write-Output “Пароль никогда не истекает? $pwdnoexpire”
    $calculation = $max_pwd_life – $result
    #calculate the difference in Day
    if (($calculation -le $max_alert))
    {
    Write-Output “$user_Name необходимо сменить пароль, он истекает через $calculation days.”
    write-output “$user_Name необходимо сменить пароль, он истекает через $calculation days.”
    out-file -filePath “C:\Users\n.prilepskiy\Desktop\pwexpired.txt”
    $userlist+=$selected_user
    if ($user.email -eq $null)
    {
    Write-Output “$user_name: Не найдено адреса электронной почты для этого пользователя .”
    Write-Output “$user_name: Не найдено адреса электронной почты для этого пользователя .” |
    out-file -filePath “C:\\no-email.txt”
    }
    else
    {
    write-output “Направляем электронной сообщение с напоминанием сменить пароль.”
    send-mailmessage -from “No-Reply ” -to $user.email -subject “Ваш пароль истекает через $calculation days” -body “Пожалуйста измените пароль. Вы это можете сделать через веб-форму (https://webmail.mydomain.com).
    По вопросам просьба обращаться в техническую поддержку.

    Техническая поддержка” -smtpServer exchange.kzsk.local
    }
    }
    else
    {
    Write-Output “Пароль еще не истекает”
    }
    Write-Output “——————————————–”
    }

    C:\scripts> C:\scripts\Send-PWDNotification3.ps1
    C:\scripts\Send-PWDNotification3.ps1:36 знак:27
    + Write-Output “$user_name: Не найдено адреса электронной почты для эт …
    + ~~~~~~~~~~~
    Недопустимая ссылка на переменную. За знаком : не следует допустимый знак имени переменной. Рекомендуется использовать ${}, чтобы отделить имя.
    C:\scripts\Send-PWDNotification3.ps1:37 знак:27
    + Write-Output “$user_name: Не найдено адреса электронной почты для эт …
    + ~~~~~~~~~~~
    Недопустимая ссылка на переменную. За знаком : не следует допустимый знак имени переменной. Рекомендуется использовать ${}, чтобы отделить имя.
    C:\scripts\Send-PWDNotification3.ps1:89 знак:27
    + Write-Output “$user_name: Не найдено адреса электронной почты для эт …
    + ~~~~~~~~~~~
    Недопустимая ссылка на переменную. За знаком : не следует допустимый знак имени переменной. Рекомендуется использовать ${}, чтобы отделить имя.
    C:\scripts\Send-PWDNotification3.ps1:90 знак:27
    + Write-Output “$user_name: Не найдено адреса электронной почты для эт …
    + ~~~~~~~~~~~
    Недопустимая ссылка на переменную. За знаком : не следует допустимый знак имени переменной. Рекомендуется использовать ${}, чтобы отделить имя.
    + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : InvalidVariableReferenceWithDrive

    PS C:\scripts>

    Permalink
    • Можно воспользоваться скриптом из статьи он делает аналогичные действия.

      Permalink
  2. Спасибо за полезный скрипт.

    Permalink

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">