AD учетная запись блокирует при использовании Outlook 2007?

Один я записал для помощи коллеге, который RDPd к серверу, открыл Event Viewer, просмотрел его для ошибок. Затем повторенный для других 3 серверов... каждый день.

'
' WMI script to read all eventlog errors generated since last time this script was run.
' This script reads a datetime value from a file (EventView_date.txt) and uses it to
' construct a WMI query for all windows EventLog entries since then that are of type
' Error or error (seems winxp writes with a lowercase e)
'
' These results are written to a file (EventView_<dts>.log) and the time the script was
' run is written to the date file. This allows this script to be run several times a day
' and will only retrieve the error entries since the last run.
'
' If the date file is not present a new one will be created with the current date/time.
'
'
' Usage: click the vbs file in Windows Explorer to run using wscript. Some information
'        will be displayed in message boxes (start time, each computer, number of records found)
'        Alternatively type "cscript EventLogErrorView.vbs" in a command prompt to show the
'        same details written to the command prompt. This can be used in a batch file, or in
'        a scheduled task - the command is cscript, the parameter is this vbs file.
'
'
' 

On Error Resume Next

'
' update this to refelect the computers to monitor - comma separated for multiple
'
arrComputers = Array("server1", "server2")



Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

Set objFSO = CreateObject("Scripting.FileSystemObject")

today = ""
Set objDateFile = objFSO.OpenTextFile ("EventView_date.txt")
    today = objDateFile.Readline
    Wscript.echo "today = " & today
    if (isempty(today)) then
        WScript.Echo "Date file not found, using today's date at midnight"
        today = Date & " 00:00:00"
    end if

    today = DateToWMIDateString(today)

' write current datetime to file for next run.
set objDateFile = objFSO.CreateTextFile("EventView_date.txt")
objDateFile.WriteLine(Date & " " & Time)

Set objFile = objFSO.CreateTextFile("EventView_" & today & ".log")



' start processing
WScript.Echo "Processing All Error reports since: " & today & " (" & WMIDateStringToDate(today) & ")"
objFile.WriteLine "Processing All Error reports since: " & today & " (" & WMIDateStringToDate(today) & ")"


For Each strComputer In arrComputers
   objFile.WriteLine
   objFile.WriteLine
   objFile.WriteLine
   objFile.WriteLine "=========================================="
   objFile.WriteLine "Computer: " & strComputer
   objFile.WriteLine "=========================================="

   WScript.Echo "Computer: " & strComputer

' notes:
' timestamp comparisons in WMI queries are in the form YYYYMMDDHHMMSS.milliseconds+exp

   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
   Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NTLogEvent WHERE (Type = 'error' OR Type= 'Error') AND TimeGenerated > '" & today & ".000000+000'", "WQL", _
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly)

   dim records
   records = 0

   For Each objItem In colItems
        objFile.WriteLine "CategoryString: " & objItem.CategoryString
        objFile.WriteLine "ComputerName: " & objItem.ComputerName
        strData = Join(objItem.Data, ",")
            objFile.WriteLine "Data: " & strData
        objFile.WriteLine "EventCode: " & objItem.EventCode
        objFile.WriteLine "EventIdentifier: " & objItem.EventIdentifier
        objFile.WriteLine "EventType: " & objItem.EventType

        strInsertionStrings = Join(objItem.InsertionStrings, ",")
        objFile.WriteLine "InsertionStrings: " & strInsertionStrings
        objFile.WriteLine "Logfile: " & objItem.Logfile
        objFile.WriteLine "Message: " & objItem.Message

        objFile.WriteLine "SourceName: " & objItem.SourceName
        objFile.WriteLine "TimeGenerated: " & WMIDateStringToDate(objItem.TimeGenerated)

        objFile.WriteLine "Type: " & objItem.Type
        objFile.WriteLine "User: " & objItem.User
        objFile.WriteLine
        objFile.WriteLine "------------------------------------------"
        objFile.WriteLine

        records = records + 1
   Next

   WScript.Echo "          " & records & " records found"
   objFile.WriteLine "          " & records & " records found"
Next



Function WMIDateStringToDate(dtmDate)
    WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
    Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
    & " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2))
End Function

' takes a dd/mm/yyyy hh:mm:ss format and turns it into yyyymmddhhmmss
Function DateToWMIDateString(dtmDate)
DateToWMIDateString = Year(dtmDate) & PadZeros(Month(dtmDate)) & PadZeros(Day(dtmDate)) & PadZeros(Hour(dtmDate)) & PadZeros(Minute(dtmDate)) & PadZeros(Second(dtmDate))
End Function

Function PadZeros(dtmDate)
If Len(dtmDate) = 1 Then
    PadZeros = "0" & dtmDate
Else
    PadZeros = dtmDate
End If
End Function
1
задан 12 February 2015 в 08:11
4 ответа

Очевидно Outlook перепутан доменами. Я предлагаю, чтобы Вы попытались пройти проверку подлинности к Exchange Server без "@firm.com". Я подозреваю, что Outlook интерпретирует это, чтобы означать, что пользователь проходит проверку подлинности в домене firm.com, о котором он знает все!

0
ответ дан 4 December 2019 в 02:25

Поскольку Ваши имена пользователей являются тем же, это будет проблемой. Outlook сначала попытается, единая точка входа при помощи в настоящее время входила в систему учетные данные пользователя. Поскольку имя пользователя соответствует этому как тому в другом лесу, Вы собираетесь получить локауты учетной записи, когда пароли не соответствуют.

Идеально, Вы создали бы доверительные отношения между лесами и затем предоставили бы Ваш пользовательский Полный доступ к почтовым ящикам в лесу Exchange.

Если это не возможно, Вы могли бы попытаться вынудить Outlook запросить удостоверения защиты при входе в систему каждый раз, когда он открыт путем установки флажка ниже (Расширенные настройки на настройке почтового ящика в Outlook).

Outlook prompt for logon

Я предполагаю, что последняя опция состояла бы в том, чтобы переименовать учетные записи (или использовать другой UPN) в одном из доменов.

1
ответ дан 4 December 2019 в 02:25

Outlook сначала пытается использовать учетные данные, используемые для входа на ПК. Если имя пользователя совпадает с именем пользователя в AD, но с другим паролем, учетная запись будет заблокирована.

См. Также Неожиданные блокировки учетной записи, вызванные при входе в Outlook из ненадежного домена .

0
ответ дан 4 December 2019 в 02:25

Я думаю, что у меня такая же проблема, как у вас, с провайдером размещенной электронной почты и тем же UserPrincipalName для наших пользователей и их учетных записей электронной почты. И я не верю, что в других ответах проблема в правильном порядке [1].

Когда Outlook пытается использовать локальные учетные данные для открытия размещенной электронной почты, он корректно терпит неудачу и запрашивает пароль. Вы вводите свой пароль размещенной электронной почты, и Outlook устанавливает соединение и счастлив. Но затем в фоновом режиме Outlook, кажется, использует пароль размещенной электронной почты, чтобы попытаться подключиться к вашей локальной Active Directory, и пытается не только один раз, но и несколько раз и молча блокирует учетную запись AD.

Именно это и происходит с нами прямо сейчас, примерно через 8 лет после того, как вы подняли вопрос / проблему. Придумывал ли кто-нибудь реальное решение?

Один из способов обхода - установить другое UPN для пользователей, тогда оно не будет совпадать и учетная запись не будет заблокирована. Это по-прежнему плохая альтернатива, поскольку мы получаем тысячи сообщений о «плохих пользователях» в AD, когда Outlook пытается использовать имя пользователя, но терпит неудачу. И для нас это неработоспособно, поскольку мы сейчас переходим на O365 и нуждаемся в правильном UPN для использования AD-Connect.


[1] Я критикую другие ответы, потому что они предполагают, что локальные учетные данные AD используются передается в размещенную электронную почту, и в этом случае будут заблокированы учетные записи размещенной электронной почты, а не локальные учетные записи AD. Совершенно другое.

0
ответ дан 4 December 2019 в 02:25

Теги

Похожие вопросы