none
密碼到期提示 RRS feed

  • 問題

  • 各位前輩們 您好

    小弟想請問一下

    是否可以設定在USER密碼快到期時 寄信通知該USER密碼快到期 要更改密碼呢

    我的環境是Server2012r2

    有使用Exchane2013

    若可以設定的話

    請問該在哪邊做設定調整呢

    2015年9月10日 上午 07:50

解答

所有回覆

  • Hi,

    TechNet MVP 有提供一個針對密碼到期通知的script, 你可以參考並測試看看2012R2是否也適用。

    How to Setup a Password Expiration Notification Email Solution

    http://blogs.technet.com/b/askpfeplat/archive/2015/05/04/how-to-setup-a-password-expiration-notification-email-solution.aspx

    Powershell for Password Expiry Email Notification

    https://gallery.technet.microsoft.com/Password-Expiry-Email-177c3e27


    請記得將對您有幫助的回覆"標示為解答"以幫助其他尋找解答及參與社群討論的朋友們。

    Please remember to click Mark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    2015年9月10日 上午 09:37
  • 您好

    謝謝您的回覆

    所以在產品本身是沒有此種功能 一定要使用scrip才能達到此目的是嗎?

    2015年9月10日 上午 10:01
  • Windows Server 或 Exchange Server 本身都沒有,
    建議參考 Molly 的建議使用 PowerShell 達成需求,
    或者網路上也找得到第三方軟體,
    但個人會覺得用 PowerShell 搭配排程就很夠用了,
    也不用擔心第三方軟體是否會做其他事情。

    蘇老碎碎念
    資訊無涯,回頭已不見岸
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案

    2015年9月10日 下午 01:32
    版主
  • 您好

    謝謝您的回覆

    我有找到一個script 如下

    但其中多數參數無法理解 

    請問各位前輩們是否可以指教一下呢

    小弟若要使用此script 所要更改的地方有哪些呢

    或著是各位前輩們有自己使用的script 可以提供小弟做參考?

    '========================================================================== 
    'Milan on 1/12/2011 
    ' This script can be used to notify users of when their windows passords 
    ' are going to expire. Especially useful in those cases where user does not logon 
    ' to windows with individual login and uses OWA for email 
    ' Script is currently running fine in a Exchange 2010 env with AD 2008 
    '========================================================================== 
    On Error Resume Next 
    Const ADS_SCOPE_SUBTREE = 2 
    Const SEC_IN_DAY = 86400 
    Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000 ' tocheck for accounts that have "no expire" set on the password 
     
    Dim maxPwdAge 
    maxpwdage = 90 'set this according to policy in your organization 
    Dim numDays 
    Dim warningDays 
    warningDays = 14 ' set this according to policy in your organization 
     
    'ADO to access Active Directory 
    Set objConnection = CreateObject("ADODB.Connection"Set objCommand = CreateObject("ADODB.Command") 
    objConnection.Provider = "ADsDSOObject" 
    objConnection.Open "Active Directory Provider" 
    Set objCommand.ActiveConnection = objConnection 
    Set objRootDSE = GetObject("LDAP://rootDSE") 
     
    DomainString = objRootDSE.Get("dnsHostName") 
     
    objCommand.Properties("Page Size") = 1000 
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
     
    objCommand.CommandText = "SELECT DisplayName,mail,DistinguishedName,sAMAccountName  FROM 'LDAP://OU=regions, DC=vsc, DC=com'" & _ 
        " where objectClass='user'" 
        '" WHERE objectCategory='user'" 'This was creating problems where it was picking up two objects that were contacts, not users 
    Set objRecordSet = objCommand.Execute 
     
    objRecordSet.MoveFirst 'get to the first record in the recordset 
    Do Until objRecordSet.EOF 
        strUser = objRecordSet.Fields("sAMAccountName").Value 
        strDN = objRecordSet.Fields("DistinguishedName").Value   'This is important otherwise we cannot pull the "last Password Change date 
        strMail = objRecordSet.Fields("mail").Value 
        strFullName = objRecordSet.Fields("DisplayName").Value 
       
            For Each objItem in strUser  'one record at a time 
                Set objUserLDAP = GetObject ("LDAP://" & strDN & "") 
                intCurrentValue = objUserLDAP.Get("userAccountControl"' For checking if the account is disabled 
                 
                '******************************************************************************************* 
                'BEGIN OF PASSWORD EXPIRATION WARNING 
                '******************************************************************************************* 
     
                    numDays = maxpwdage 
                    dtVal = objUserLDAP.PasswordLastChanged 'The latest date the user changed her/his password 
                    whenPasswordExpires = DateAdd("d", numDays, dtval) 
                    fromDate = Date 
                    daysLeft = DateDiff("d",fromDate,whenPasswordExpires) 
                    If (daysLeft < warningDays) and (daysLeft > 0) then  'If 14 days or less remain until Password expires 
                        If strMail <> "" Then 
                            Set objEmail = CreateObject("CDO.Message") 
                            objEmail.From = "admin@watchdog" 
                            objEmail.To = strmail 
                            objemail.cc = "xxxxxx@xxx.com" 
                            objEmail.Subject = strFullname & ", your Windows Password is expiring soon!!"  
                            objEmail.HTMLBody = "Your Password Expires in " & daysLeft & " day(s)" & vbcrlf & _ 
                            "<h3>Windows users - Press CTRL-ALT-DEL and select the CHANGE A PASSWORD option</h3>" & vbcrlf & _ 
                            "<h3>Outlook Web Users - Please click (Options) and choose (Change your Password)</h3>" & vbcrlf & _ 
                            "<h3>This reminder will continue until you change your password</h3>" & vbcrlf & _ 
                            "<h3> Please do not reply to this email</h3>" 
                            objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
                            objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.xx.xx" 
                             objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
                            objEmail.Configuration.Fields.Update 
                            objEmail.Send 
                          'end if 
                        End If 
                     End if 
            Next 
        objRecordSet.MoveNext ' Keep going down the table 
    Loop 
     
    Set objConnection = Nothing 
    Set objCommand = Nothing 
    Set objCommand.ActiveConnection = Nothing 
    Set objRootDSE = Nothing 
    Set objRecordSet = Nothing 
    Set objUserLDAP = Nothing 
    Set objEmail = Nothing 
    WScript.Quit 


    2015年9月18日 上午 06:40
  • 因為你的環境是 Server 2012 R2,
    建議參考先前 Molly 提供的 TechNet Gallery 資訊,
    用 PowerShell 方式完成你的目的,
    會比用 VB 容易很多,
    我自己的環境也是用那個做基礎改的。

    蘇老碎碎念
    資訊無涯,回頭已不見岸
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案

    2015年9月18日 下午 01:19
    版主
  • 您好

    謝謝您的回覆

    我已下載該檔案下來

    在別的地方也查詢過 需要修改程式,不然送出的通知信件中文會亂碼

    也就是需要加入-Encoding ([System.Text.Encoding]::UTF8)

    除了這邊需要修改外

    其餘還有地方需要做修改嗎

    修改完後該如何使用此檔案呢
    • 已編輯 ray11429 2015年9月21日 上午 07:18
    2015年9月21日 上午 07:17
  • 你說的下載該檔案是指 TechNet Gallery 的 PowerShell 範例嗎?
    如果是,請嘗試在這個 PowerShell 程式設定需要的參數值,
    譬如到期前多少天就要發送等,
    並寄送郵件,看結果的呈現是否是你想要的,
    或者嘗試修改該指令以符合你們的環境或需求。

    PowerShell 可以客製化的東西很多,
    包含郵件內容都可以用 HTML 方式輸出。


    之前做移轉 Root CA 是移轉到 Exchange 上嗎?
    如果不是,可能要嘗試將 Exchange 上的憑證服務移除,
    並且 Exchange 重新向正確的憑證單位索取憑證並指派。

    蘇老碎碎念
    資訊無涯,回頭已不見岸
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案
    Azurecon 2015 | Microsoft Azure


    2015年9月21日 上午 07:48
    版主