我有一個腳本,顯示特定AD用戶所屬的組的過濾列表。它的工作原理完全正常作爲一個VBS文件,但在導入到任何一個HTA或HTML文件時,它運行下面的「objRecordSet.MoveFirst」線的時候給了我一個「搜索篩選器無法識別」錯誤消息。腳本可用作VBS但不是HTML
Dim User
Dim DIA
Dim GroupList
DIA = "No"
User = "UserNic"
Const ADS_SCOPE_SUBTREE = 2
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT memberOf FROM 'LDAP://dc=company,dc=com' WHERE objectCategory='user' And mailnickname='" & User & "'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
arrMemberOf = objRecordSet.Fields("memberOf")
if isArray(objRecordSet.Fields("memberOf")) Then
For Each x in arrMemberOf
If InStr(x,"GroupFilter") <> 0 Then
Group = x
Group = Right(Group,Len(Group)-3)
Group = Left(Group,InStr(Group,",")-1)
GroupList = Group & vbCrLf & GroupList
End If
If InStr(x,"DIA") <> 0 Then DIA = "Yes"
Next
End if
objRecordSet.MoveNext
Loop
WScript.Echo GroupList
WScript.echo "DIA: " & DIA
我也有另外一個腳本這是幾乎相同的是確實在HTA/HTML格式工作。這其中只是顯示了一個電子郵件帳戶,如果在所有轉發:
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT Name, altRecipient FROM 'LDAP://dc=company,dc=com' WHERE objectCategory='user' And Name='*" & Hosp & "' And altRecipient='*'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Count = 0
Do Until objRecordSet.EOF
Name(Count) = objRecordSet.Fields("Name").Value
Forward(Count) = objRecordSet.Fields("altRecipient").Value
arrLines = Split(Forward(Count),",")
search = Filter(arrLines,"CN=",True,1)
for each x in search
Forward(Count) = x
Next
Forward(Count) = Replace(Forward(Count),"CN=","")
objRecordSet.MoveNext
Count = Count + 1
Loop
我似乎無法找到每個腳本的「objRecordSet.MoveFirst」線之間的功能差異。
請幫忙!
編輯:這裏
相同的結果。試過的代碼來執行相同的操作的備用塊 - 工作正常,如VBS而不是HTA:
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<LDAP://dc=domain,dc=com>;" & "(&(objectCategory=Person)(mailnickname=" & User & "));" & "distinguishedName,Name;subtree"
Set objRecordSet = objCommand.Execute
intCount = 0
If objRecordSet.EOF Then
Set WshShell = CreateObject("WScript.Shell")
message = WshShell.Popup ("Unable to find a user with the alias '" & User & "'! Please try again...",, "programname", 0 + 16)
'Exit Sub
Else
While NOt objRecordSet.EOF
intCount = intCount + 1
objRecordSet.MoveNext
WEND
If intCount = 1 Then
objRecordSet.MoveFirst
Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedname"))
Set colGroups = objUser.Groups
For Each objGroup in colGroups
Group = objGroup.CN
GroupList = Group & vbCrLf & GroupList
Next
End If
End If
WScript.Echo GroupList
你是如何運行'HTML'文件,從本地機器上,或者從服務器?與正在計算機上運行的'VBS'文件相比,瀏覽器具有非常強的安全限制 – freefaller 2012-07-17 17:20:16
工作和非工作腳本都從NAS運行。工作腳本同時適用於HTA和HTML格式(我已將它們都作爲受信任的站點添加,並且在自定義安全級別下啓用了「跨數據源訪問數據源」。) – VoidnessMD 2012-07-17 17:25:15
非常奇怪...抱歉,不知道什麼是錯誤的。 祝你好運 – freefaller 2012-07-17 17:29:02