有没有办法查询 Exchange 2007 以区分谁是使用 powershell 交换插件的活动同步用户或黑莓用户?
5 回答
BBES 通常使用有权访问所有邮箱的服务帐户来执行此操作。您将需要查看 BBES 服务器本身以找出哪些用户处于活动状态,而不是 AD 或 Exchange。因为 BBES 由数据库支持,所以只需深入了解 dbo.UserStats 表即可查看其中的内容。
试试这个。
Get-CASMailbox -resultsize unlimited | Where-Object {$_.ActiveSyncEnabled -eq "True" } | Select-Object SamAccountName,ActiveSyncEnabled
您可以查询以查看哪些邮箱启用了必要的权限 - 就像您可以查看哪些邮箱启用了 OWA 一样。这实际上不会告诉您谁在使用该功能,而只是告诉您谁可以使用。
我确实从这个网站上找到了这个 vbscript。http://blogs.technet.com/mjimenez/archive/2007/07/30/how-do-i-programmatically-disable-enable-microsoft-exchange-active-sync-for-all-of-my-mobile-用户.aspx
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''
'' DISABLEEAS.VBS
''
'' Disables Exchange Server 2003 Active Sync for the specified OU in the default domain
''
'' usage: cscript disableeas
''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Below are the values for the msExchOmaAdminWirelessEnable Exchange attribute that can be modified.
' 5 = disable EAS and keep OMA enabled.(default)
' 7 = disable all mobile features.
' 0 = enable all mobile features. (not recommended)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' Create log file instance
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile("c:\disableeas.log", 2, True, 0)
If Err.Number <> 0 Then
' Attempt to create a log file failed.
On Error GoTo 0
objLogFile.WriteLine "ERROR: Failed to create a log file.Program execution halted."
WScript.Echo "ERROR: Failed to create a log file. Program execution halted."
WScript.Quit
objLogFile.Close
Set objFSO = Nothing
Else
' Successfully Created Disableeas.log file. Restore normal error handling.
On Error GoTo 0
objLogFile.WriteLine "disableeas.log created successfully"
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' Determine DNS domain name
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set objRootDSE = GetObject("LDAP://rootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
strBaseOU = "" 'SPECIFY AND ORGANIZATIONAL UNIT NAME HERE. FOR EXAMPLE 'OU=Production
If Err.Number <> 0 Then
' Attempt to bind to Active Directory Failed.
On Error GoTo 0
objLogFile.WriteLine "ERROR: Binding to Active Directory Failed. Program execution halted."
WScript.Echo "ERROR: Binding to Active Directory Failed. Program execution halted."
WScript.Quit
objLogFile.Close
Set objFSO = Nothing
Else
' Active Directory bind successful
On Error GoTo 0
objLogFile.WriteLine "Binding to Active Directory successful"
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' Setup ADO for Active Directory
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
If Err.Number <> 0 Then
' Attempt to search Active Directory Failed.
On Error GoTo 0
objLogFile.WriteLine "ERROR: ADO Setup for Active Directory Failed. Program execution halted."
WScript.Echo "ERROR: ADO Setup for Active Directory Failed. Program execution halted."
WScript.Quit
objLogFile.Close
Set objFSO = Nothing
Else
' ADO Active Directory setup successful
On Error GoTo 0
objLogFile.WriteLine "Active Directory setup successful"
End If
' Test whether an OU is specified.
If strBaseOU <> "" Then
strBase="<LDAP://" & strBaseOU & "," & strDNSDomain & ">"
Else strBase="<LDAP://" & strDNSDomain & ">"
End If
'strBase="<LDAP://" & strDNSDomain & ">"
wscript.echo strBase
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' Search for users with defined filters
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
strFilter = "(&(objectCategory=person)(objectClass=user)(!msExchOmaAdminWirelessEnable=5)(mail=*)(userAccountControl=66048))"
strAttributes = "distinguishedName"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 100
objCommand.Properties("Timeout") = 30
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
If Err.Number <> 0 Then
' Attempt to search within defined parameters failed.
On Error GoTo 0
objLogFile.WriteLine "Attempt to search within defined parameters failed. Program execution halted."
WScript.Echo "ERROR: Attempt to search within defined parameters failed. Program execution halted."
WScript.Quit
objLogFile.Close
Set objFSO = Nothing
Else
' Active Directory bind successful
On Error GoTo 0
objLogFile.WriteLine "Search within defined parameters was successful"
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' Enuerate all users
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Do Until objRecordSet.EOF
strDN = objRecordSet.Fields("distinguishedName")
Set objUser = GetObject("LDAP://" & strDN)
On Error Resume Next
objUser.Get("msExchOmaAdminWirelessEnable")
On Error GoTo 0
objUser.Put "msExchOmaAdminWirelessEnable", "5"
objUser.SetInfo
If Err.Number <> 0 Then
On Error GoTo 0
objLogFile.Writeline "ERROR: Unfortunately, the required mobile attribute generated an error can could not be set. Program execution halted."
WScript.Echo "ERROR: Unfortunately, the required mobile attribute generated an error can could not be set. Program execution halted."
Wscript.Quit
objLogFile.Close
Set objFSO = Nothing
Else
On Error GoTo 0
objLogFile.Writeline "User mobile properties successfully modified: " & objUser.Name
Wscript.Echo "User mobile properties successfully modified: " & objUser.Name
End If
' End If
objRecordSet.MoveNext
Loop
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' Clean up
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
objLogFile.WriteLine "End Program"
Wscript.Echo "End Program"
objLogFile.Close
我希望有一种方法可以由用户而不是你来做到这一点。
我发现powershell中有一个cmdlet可以描述activesync是否在线。
如果你运行 > get-casmailbox | 获取成员
我注意到列表中有一个 ActiveSyncEnabled 属性