我正在尝试获取用户的SIP地址,以便我可以使用JavaScript对象检查它们在Office Communicator中的存在。这是我发现的一个类似于我想要的脚本。
Option Explicit
DIM objConnection, objCommand
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
Dim objOU, objUser, strUPN, strSIP, SIPLine
' Bind to the OU object.
Set objOU = GetObject("LDAP://chkenergy.net/DC=chkenergy,DC=net")
' Enumerate all users in the OU.
objOU.Filter = Array("user")
For Each objUser In objOU
' Skip computer objects.
If (objUser.Class = "user") Then
strUPN = objUser.userPrincipalName
strSIP = objUser.get("msRTCSIP-PrimaryUserAddress")
wscript.echo strSIP
End If
Next
基本上,我可以从AD获取他们的用户名,我想传递它并获取他们的SIP地址(strSIP)。有没有办法修复此代码专门执行该任务?
答案 0 :(得分:0)
您发布的vbscript的问题是
在回答您的问题之前,以下是Active Directory的一些基本背景知识。
user@domain.name
您可以使用ADO连接对象执行查询。由于您绑定到Active Directory,因此可以执行LDAP查询。 LDAP查询字符串包含四个部分。
您应该使用的LDAP查询字符串应该类似于
<LDAP://chkenergy.net/DC=chkenergy,DC=net>;(&(objectClass=user)(samAccountName=yourusername));msRTCSIP-PrimaryUserAddress;subtree
<LDAP://chkenergy.net/DC=chkenergy,DC=net>
。(&(objectClass=user)(samAccountName=yourusername))
。当然,您需要将yourusername
替换为代码中的其他内容。我假设您可以传入samAccountName。如果不是这种情况,您需要自己修改过滤器。 msRTCSIP-PrimaryUserAddress
。我认为这就是你所需要的。正确?subtree
以下是我认为应该完成工作的完整示例
userName = "harvey"
ldapStr = "<LDAP://chkenergy.net/DC=chkenergy,DC=net>;(&(objectClass=user)(samAccountName=" & userName & "));msRTCSIP-PrimaryUserAddress;subtree"
Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADSDSOObject"
conn.Open "ADs Provider"
Set rs = conn.Execute(ldapStr)
While Not rs.EOF
wscript.echo rs.Fields("msRTCSIP-PrimaryUserAddress")
rs.MoveNext
Wend