AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 28050
Accepted
Kara Marfia
Kara Marfia
Asked: 2009-06-19 06:47:44 +0800 CST2009-06-19 06:47:44 +0800 CST 2009-06-19 06:47:44 +0800 CST

是否有 AD 属性可以告诉我帐户是否使用 ActiveSync?

  • 772

我知道 Exchange 需要保留邮箱的同步状态信息,所以我希望我可以使用相关属性来了解谁在使用智能手机检查邮件。

到目前为止,我们仍在使用 Exchange 2003。似乎最好的方法是在 ADUC 中保存查询,我希望可以用它来创建通讯组?但是,无论您拥有什么都比我拥有的要好,所以在此先感谢您。

active-directory exchange-2003 activesync
  • 4 4 个回答
  • 9544 Views

4 个回答

  • Voted
  1. Best Answer
    Jim B
    2009-06-19T07:25:54+08:002009-06-19T07:25:54+08:00

    不,但您可以询问用户是否正在使用 activesync。您需要查找该邮箱上是否存在 Microsoft-Server-ActiveSync。您需要寻找 Glen Scales 编写的脚本来做到这一点。 您还可以解析日志。我在他的网站上找不到它,所以这里是代码:

    servername = wscript.arguments(0)
    set shell = createobject("wscript.shell")
    strValueName = "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias"
    minTimeOffset = shell.regread(strValueName)
    toffset = datediff("h",DateAdd("n", minTimeOffset, now()),now())
    
    report = "<table border=""1"" width=""100%"">" & vbcrlf
    report = report & "  <tr>" & vbcrlf
    report = report & "<td align=""center"" bgcolor=""#000080""><b><font color=""#FFFFFF"">DisplayName</font></b></td>" & vbcrlf
    report = report & "<td align=""center"" bgcolor=""#000080""><b><font color=""#FFFFFF"">Email Address</font></b></td>" & vbcrlf
    report = report & "<td align=""center"" bgcolor=""#000080""><b><font color=""#FFFFFF"">Device Type</font></b></td>" & vbcrlf
    report = report & "<td align=""center"" bgcolor=""#000080""><b><font color=""#FFFFFF"">Device ID</font></b></td>" & vbcrlf
    report = report & "<td align=""center"" bgcolor=""#000080""><b><font color=""#FFFFFF"">FolderSync</font></b></td>" & vbcrlf
    report = report & "<td align=""center"" bgcolor=""#000080""><b><font color=""#FFFFFF"">ContactSync</font></b></td>" & vbcrlf
    report = report & "<td align=""center"" bgcolor=""#000080""><b><font color=""#FFFFFF"">CalendarSync</font></b></td>" & vbcrlf
    report = report & "<td align=""center"" bgcolor=""#000080""><b><font color=""#FFFFFF"">autdstate.xml</font></b></td>" & vbcrlf
    report = report & "</tr>" & vbcrlf
    set req = createobject("microsoft.xmlhttp")
    set com = createobject("ADODB.Command")
    set conn = createobject("ADODB.Connection")
    Set iAdRootDSE = GetObject("LDAP://RootDSE")
    strNameingContext = iAdRootDSE.Get("configurationNamingContext")
    strDefaultNamingContext = iAdRootDSE.Get("defaultNamingContext")
    Conn.Provider = "ADsDSOObject"
    Conn.Open "ADs Provider"
    polQuery = "<LDAP://" & strNameingContext &  ">;(&(objectCategory=msExchRecipientPolicy)(cn=Default Policy));distinguishedName,gatewayProxy;subtree"
    svcQuery = "<LDAP://" & strNameingContext & ">;(&(objectCategory=msExchExchangeServer)(cn=" & Servername & "));cn,name,legacyExchangeDN;subtree"
    Com.ActiveConnection = Conn
    Com.CommandText = polQuery
    Set plRs = Com.Execute
    while not plRs.eof
        for each adrobj in plrs.fields("gatewayProxy").value
            if instr(adrobj,"SMTP:") then dpDefaultpolicy = right(adrobj,(len(adrobj)-instr(adrobj,"@")))
        next
        plrs.movenext
    wend
    wscript.echo dpDefaultpolicy 
    Com.CommandText = svcQuery
    Set Rs = Com.Execute
    while not rs.eof    
        GALQueryFilter =  "(&(&(&(& (mailnickname=*)(!msExchHideFromAddressLists=TRUE)(| (&(objectCategory=person)(objectClass=user)(msExchHomeServerName=" & rs.fields("legacyExchangeDN") & ")) )))))"
        strQuery = "<LDAP://"  & strDefaultNamingContext & ">;" & GALQueryFilter & ";displayname,mail,distinguishedName,mailnickname,proxyaddresses;subtree"
        com.Properties("Page Size") = 100
        Com.CommandText = strQuery
        Set Rs1 = Com.Execute
        while not Rs1.eof
            falias = "http://" & servername & "/exadmin/admin/" & dpDefaultpolicy & "/mbx/"
            if not isnull(rs1.fields("proxyaddresses").value) then 
                for each paddress in rs1.fields("proxyaddresses").value
                    if instr(paddress,"SMTP:") then falias = falias & replace(paddress,"SMTP:","")  & "/non_ipm_subtree"
                next
                wscript.echo  falias 
                SerachAsync(falias)
            else 
                wscript.echo "*** Null Proxy ****   : " & rs1.fields("mailnickname")
            end if
            rs1.movenext
        wend
        rs.movenext
    wend
    rs.close
    set conn = nothing
    set com = nothing
    report = report & "</table>" & vbcrlf
    Set fso = CreateObject("Scripting.FileSystemObject")
    set wfile = fso.opentextfile("c:\temp\asreport.htm",2,true) 
    wfile.write report
    wfile.close
    set wfile = nothing
    set fso = nothing
    
    wscript.echo "Done"
    
    sub SerachAsync(furl)
    strQuery = "<?xml version=""1.0""?><D:searchrequest xmlns:D = ""DAV:"" >"
    strQuery = strQuery & "<D:sql>SELECT ""http://schemas.microsoft.com/mapi/proptag/x3001001E"""
    strQuery = strQuery & " FROM scope('shallow traversal of """
    strQuery = strQuery & furl & """') Where ""DAV:ishidden"" = False AND ""DAV:isfolder"" = True AND "
    strQuery = strQuery & """http://schemas.microsoft.com/mapi/proptag/x3001001E"" = 'Microsoft-Server-ActiveSync'</D:sql></D:searchrequest>"
    req.open "SEARCH", furl, false
    req.setrequestheader "Content-Type", "text/xml"
    req.setRequestHeader "Translate","f"
    on error resume next
    req.send strQuery
    if err.number <> 0 then wscript.echo err.description
    on error goto 0
    If req.status >= 500 Then
    ElseIf req.status = 207 Then
        set oResponseDoc = req.responseXML
        set oNodeList = oResponseDoc.getElementsByTagName("d:x3001001E")
        if oNodeList.length <> 0 then
            wscript.echo "Active-Sync Folder Exists"
            displayAyncSub(furl & "/Microsoft-Server-ActiveSync")
        else
            wscript.echo "No Active-Sync Folder"
        end if 
    Else
    End If
    
    end sub
    
    sub displayAyncSub(furl)
    
    strQuery = "<?xml version=""1.0""?><D:searchrequest xmlns:D = ""DAV:"" >"
    strQuery = strQuery & "<D:sql>SELECT ""http://schemas.microsoft.com/mapi/proptag/x3001001E"""
    strQuery = strQuery & " FROM scope('shallow traversal of """
    strQuery = strQuery & furl & """') Where ""DAV:ishidden"" = False AND ""DAV:isfolder"" = True</D:sql></D:searchrequest>"
    req.open "SEARCH", furl, false
    req.setrequestheader "Content-Type", "text/xml"
    req.setRequestHeader "Translate","f"
    on error resume next
    req.send strQuery
    if err.number <> 0 then wscript.echo err.description
    on error goto 0
    If req.status >= 500 Then
    ElseIf req.status = 207 Then
        set oResponseDoc = req.responseXML
        set oNodeList = oResponseDoc.getElementsByTagName("d:x3001001E")
        for each node in oNodeList
            call displaydeviceSub(furl & "/" & node.text,node.text)
        next
    Else
    End If
    end sub
    
    sub displaydeviceSub(furl,fname)
    
    strQuery = "<?xml version=""1.0""?><D:searchrequest xmlns:D = ""DAV:"" >"
    strQuery = strQuery & "<D:sql>SELECT ""http://schemas.microsoft.com/mapi/proptag/x3001001E"""
    strQuery = strQuery & " FROM scope('shallow traversal of """
    strQuery = strQuery & furl & """') Where ""DAV:ishidden"" = False AND ""DAV:isfolder"" = True</D:sql></D:searchrequest>"
    req.open "SEARCH", furl, false
    req.setrequestheader "Content-Type", "text/xml"
    req.setRequestHeader "Translate","f"
    on error resume next
    req.send strQuery
    if err.number <> 0 then wscript.echo err.description
    on error goto 0
    If req.status >= 500 Then
    ElseIf req.status = 207 Then
        set oResponseDoc = req.responseXML
        set oNodeList = oResponseDoc.getElementsByTagName("d:x3001001E")
        for each node in oNodeList
            report = report & "<tr>" & vbcrlf
            report = report & "<td align=""center"">" & rs1.fields("displayname") & "&nbsp;</td>" & vbcrlf
            report = report & "<td align=""center"">" & rs1.fields("mail") & "&nbsp;</td>" & vbcrlf
            report = report & "<td align=""center"">" & fname & "&nbsp;</td>" & vbcrlf
            report = report & "<td align=""center"">" & node.text  & "&nbsp;</td>" & vbcrlf
            report = report & finditems(furl & "/" & node.text)
            report = report & "</tr>" & vbcrlf
        next
    Else
    End If
    end sub
    
    function finditems(furl)
    
    hascalsyc = 0
    hasfolsyc = 0
    hasconsyc = 0
    hasautd = 0
    rback = ""
    strQuery = "<?xml version=""1.0""?><D:searchrequest xmlns:D = ""DAV:"" >"
    strQuery = strQuery & "<D:sql>SELECT ""DAV:displayname"", ""DAV:getlastmodified"""
    strQuery = strQuery & " FROM scope('shallow traversal of """
    strQuery = strQuery & furl & """') Where ""DAV:isfolder"" = False</D:sql></D:searchrequest>"
    req.open "SEARCH", furl, false
    req.setrequestheader "Content-Type", "text/xml"
    req.setRequestHeader "Translate","f"
    on error resume next
    req.send strQuery
    if err.number <> 0 then wscript.echo err.description
    on error goto 0
    rem wscript.echo req.responsetext
    If req.status >= 500 Then
    ElseIf req.status = 207 Then
        set oResponseDoc = req.responseXML
        set oNodeList = oResponseDoc.getElementsByTagName("a:displayname")
        set oNodemodlist = oResponseDoc.getElementsByTagName("a:getlastmodified")
        wscript.echo oNodeList.length
        for i = 1 to oNodeList.length
            set onode = oNodeList.nextNode
            set onode1 = oNodemodlist.nextNode
            select case lcase(onode.text)
                case "calendarsyncfile" hascalsyc = 1
                            hascalsycval = DateAdd("h",toffset,(left(replace(replace(onode1.text,"T"," "),"Z",""),19)))
                case "foldersyncfile"   hasfolsyc = 1
                            hasfolsycval = DateAdd("h",toffset,(left(replace(replace(onode1.text,"T"," "),"Z",""),19)))
                case "contactssyncfile" hasconsyc = 1
                            hasconsycval = DateAdd("h",toffset,(left(replace(replace(onode1.text,"T"," "),"Z",""),19)))
                case "autdstate.xml"    hasautd = 1
                            hasautdval = DateAdd("h",toffset,(left(replace(replace(onode1.text,"T"," "),"Z",""),19)))
            end select
        next
    Else
    End If
    wscript.echo hasfolsyc
    if hasfolsyc = 1  then
        rback = rback & "<td align=""center"">" & hasfolsycval & "&nbsp;</td>" & vbcrlf
    else
        rback = rback & "<td align=""center"">No&nbsp;</td>" & vbcrlf
    end if
    if hasconsyc  = 1  then
        rback = rback & "<td align=""center"">" & hasconsycval & "&nbsp;</td>" & vbcrlf
    else
        rback = rback & "<td align=""center"">No&nbsp;</td>" & vbcrlf
    end if
    if hascalsyc  <> 0  then
        rback = rback & "<td align=""center"">" & hascalsycval & "&nbsp;</td>" & vbcrlf
    else
        rback = rback & "<td align=""center"">No&nbsp;</td>" & vbcrlf
    end if
    if hasautd  <> 0  then
        rback = rback & "<td align=""center"">" & hasautdval & "&nbsp;</td>" & vbcrlf
    else
        rback = rback & "<td align=""center"">No&nbsp;</td>" & vbcrlf
    end if
    finditems = rback
    end function
    
    • 3
  2. squillman
    2009-06-19T07:00:18+08:002009-06-19T07:00:18+08:00

    看起来它是由 msExchOmaAdminWirelessEnable 中的一位控制的。这是本文中某人列出的位描述。

    1 (bit 0) = 1 to disable Server Activesync, 0 to enable it
    2 (bit 1) = 1 to disable OMA, 0 to enable it
    4 (bit 2) = 1 to disable Always Up-To-Date (AUTD), 0 to enbable it
    

    看起来该值是 AD 中的十进制值,因此您需要将这些位与在一起并将其转换为十进制以进行设置。因此:

    Disable everything = 0x111 = 7
    Enable ActiveSync, Disable OMA, Disable AUTD = 0x110 = 6
    Enable ActiveSync, Disable OMA, Enable Autd = 0x010 = 4
    etc...
    
    • 2
  3. Evan Anderson
    2009-06-19T07:01:37+08:002009-06-19T07:01:37+08:00

    先看看这个:http: //support.microsoft.com/kb/830188

    因此,基本上,默认情况下,所有用户对象上都没有设置“msExchOmaAdminWirelessEnable”属性,并且允许使用 ActiveSync 进行访问。如果您选择为所有用户关闭它,然后只为需要它的用户启用它,那么您可以过滤/查询此“msExchOmaAdminWirelessEnable”属性。

    所以,这是一个先有鸡还是先有蛋的问题。如果您不知道谁在使用它,则无法更改此属性。

    我会考虑解析 IIS 服务器上的日志以确定谁在使用 ActiveSync,然后考虑为所有未使用它的用户设置标志。这很痛苦,但它看起来是我能看到的做你想做的最好的方式。

    • 1
  4. MathewC
    2009-06-19T07:17:59+08:002009-06-19T07:17:59+08:00

    我只是浏览了所有属性,找不到任何可以赠送的东西。

    对不起。

    • 0

相关问题

  • 什么时候域比工作组更适合网络?

  • 我应该在 Active Directory 中配置哪些重要的组策略设置?[关闭]

  • 使用 AD 在特定时间段内阻止对特定网站的访问

  • 在登录期间打开 URL 的现代方法是什么?

  • 如何将我的所有数据从 Exchange 2003 迁移到 Exchange 2007?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve