Partager via


Example: Searching for Password Change Requests Sent to a Connected Data Source

For connected data sources that receive a new password as a result of the password synchronization feature of MIIS, you might want to determine how the change request got to the target data source. The MIIS_PasswordChangeHistoryTarget class retrieves the password change histories for the connected data sources that receive the password change from the ILM 2007 FP1 server.

The following examples show how to search for password change histories that are sent to the target connected data source:

  • By Time
  • By Target Management Agent
  • By Reference GUID

By Time

The following VBScript example shows how to retrieve the password change history for any change request that was sent to the target connected data source after September 16, 2004.

Option Explicit

On Error Resume Next

Const PktPrivacy = 6    ' Authentication level
Dim Service             ' Service object
Dim queryString         ' SQL Query string
Dim errorString         ' Error string
Dim statusString        ' Status string
Dim timePeriod          ' Time string
Dim changeHistories     ' Change history collection
Dim changeHistory       ' Change history member

Set Service = GetObject("winmgmts:{authenticationLevel=PktPrivacy}!root\MicrosoftIdentityIntegrationServer")

If err.number<>0 Then 
  errorString = "Could not retrieve service object: "
  errorString = errorString & Err.Description
  ErrorHandler(errorString)  
End If

timePeriod = "2004-09-16"
queryString = "Select * from MIIS_PasswordChangeHistoryTarget WHERE "
queryString = queryString & "MIISReceiveTime > '" & timePeriod & "'"
Set changeHistories = Service.ExecQuery(queryString)

If err.number <> 0 Then
  errorString = "Could not retrieve password change history: " 
  errorString = errorString & Err.Description
  ErrorHandler(errorString)    
End If

If changeHistories.Count = 0 Then
  statusString = "There are no password changes requested after "
  statusString = statusString & timePeriod & "."
  ErrorHandler(statusString)
Else
  For Each changeHistory In changeHistories
    statusString = "Change History that occurred after "
    statusString = statusString & timePeriod & "."
    WScript.Echo statusString
    WScript.Echo changeHistory.eventDetails
  Next
End If

Sub ErrorHandler (ErrorMessage)
  WScript.Echo ErrorMessage
  WScript.Quit(1)

End Sub

By Target Management Agent

The following VBScript examples shows how to retrieve the password changes for a specified management agent that were sent to the target connected data source.

Option Explicit

On Error Resume Next

Const PktPrivacy = 6    ' Authentication level
Dim Service             ' Service object
Dim queryString         ' SQL Query string
Dim errorString         ' Error string
Dim statusString        ' Status string
Dim ManagementAgentSet  ' Management agent collection
Dim ManagementAgent     ' Management agent member
Dim changeHistories     ' Change history collection
Dim changeHistory       ' Change history member

Set Service = GetObject("winmgmts:{authenticationLevel=PktPrivacy}!root\MicrosoftIdentityIntegrationServer")

If err.number <> 0 Then 
  errorString = "Could not retrieve service object: "
  errorString = errorString & Err.Description
  ErrorHandler(errorString)    
End If

queryString = "Select * From MIIS_ManagementAgent"
Set ManagementAgentSet = Service.ExecQuery(queryString)
If err.number <> 0 Then
  errorString = "Could not retrieve management agent collection: "
  errorString = errorString & err.Description
  ErrorHandler(errorString)    
End If

If ManagementAgentSet.Count = 0 Then 
  statusString = "There are no management agents on this server."
  ErrorHandler(statusString)    
End If 

For each ManagementAgent in ManagementAgentSet
  queryString = "Select * from MIIS_PasswordChangeHistoryTarget WHERE "
  queryString = queryString & "MaGuid = '"
  queryString = queryString & ManagementAgent.Guid & "'"
  Set changeHistories = Service.ExecQuery(queryString)
  If err.number <> 0 Then
    errorString = "Could not retrieve password change history: " 
    errorString = errorString & Err.Description
    ErrorHandler(errorString)
  End If

  If changeHistories.Count = 0 then
    statusString = "There are no password change histories for the " 
    statusString = statusString & ManagementAgent.Name
    statusString = statusString & " management agent."
    WScript.Echo statusString
  Else
    For Each changeHistory in changeHistories
      statusString = "Change History for the "
      statusString = statusString & ManagementAgent.Name
      statusString = statusString & " management agent:"
      WScript.Echo statusString
      WScript.Echo changeHistory.eventDetails
    Next
  End If
Next

Sub ErrorHandler (ErrorMessage)
  WScript.Echo ErrorMessage
  WScript.Quit(1)
End Sub

By Reference GUID

The following VBScript example shows how to retrieve the password changes that were sent to the target server by using a query with the reference GUID. In this example, the reference GUID is supplied in the example. You can obtain the reference GUID from the MIIS_PasswordChangeHistorySource or the MIIS_PasswordChangeQueue class and pass the value to this script to track the password change history from the originating connected data source to the target data sources.

Option Explicit

On Error Resume Next

Const PktPrivacy = 6    ' Authentication level
Dim Service             ' Service object
Dim queryString         ' SQL Query string
Dim errorString         ' Error string
Dim statusString        ' Status string
Dim refGuid             ' Reference Guid string
Dim changeHistories     ' Change history collection
Dim changeHistory       ' Change history member

' In this example, the reference GUID is supplied. In practice, the
' reference GUID can be obtained from the 
' MIIS_PasswordChangeHistorySource or the MIIS_PasswordChangeQueue
' classes and be passed to this script.

refGuid = "{B6F6FEB7-0EB7-45D9-B4CB-3B6B02CA9023}"
Set Service = GetObject("winmgmts:{authenticationLevel=PktPrivacy}!root\MicrosoftIdentityIntegrationServer")

If err.number <> 0 Then 
  errorString = "Could not retrieve service object: "
  errorString = errorString & Err.Description
  ErrorHandler(errorString)   
End If

queryString = "Select * From MIIS_PasswordChangeHistoryTarget WHERE "
queryString = queryString & "ReferenceGuid = '"
queryString = queryString & refGuid & "'"
    
Set changeHistories = Service.ExecQuery(queryString)
If err.number <> 0 Then
  errorString = "Could not retrieve password change history: " 
  errorString = errorString & Err.Description
  ErrorHandler(errorString)
End If

If changeHistories.Count = 0 Then
  statusString = "There are no password change histories for the " 
  statusString = statusString & "reference Guid "
  statusString = statusString & refGuid & "."
  WScript.Echo statusString
    
Else
  For Each changeHistory in changeHistories
  statusString = "Change History for Reference Guid:  "
  statusString = statusString & refGuid
  statusString = statusString & ":"
  WScript.Echo statusString
  WScript.Echo changeHistory.eventDetails
Next
    
End If

Sub ErrorHandler (ErrorMessage)
  WScript.Echo ErrorMessage
  WScript.Quit(1)
End Sub

Send comments about this topic to Microsoft

Build date: 2/16/2009