Platform SDK: Active Directory, ADSI, and Directory Services |
The following VBScript examples create an external crossRef object.
''''''''''''''''''''''''''''''''''''''' 'Parse the arguments ''''''''''''''''''''''''''''''''''''''' On Error Resume Next Set oArgs = WScript.Arguments If oArgs.Count = 3 Then sCrossRefCN = oArgs.item(0) sCrossRefDNSRoot = oArgs.item(1) sCrossRefNCName = oArgs.item(2) Else sCrossRefCN = InputBox("This script creates a cross reference object." & vbCrLf & vbCrLf &"Specify the name (cn) of the new crossRef object:") sCrossRefDNSRoot = InputBox("Specify the DNS root of the server or domain containing the external naming context:") sCrossRefNCName = InputBox("Specify the distinguished name (DN) of the external naming context:") End If If sCrossRefCN = "" Then WScript.Echo "No CN was specified. You must specify a CN." WScript.Quit(1) End If If sCrossRefNCName = "" Then WScript.Echo "No DN was specified. You must specify a DN." WScript.Quit(1) End If If sCrossRefDNSRoot = "" Then WScript.Echo "No DNS root was specified. You must specify a DNS root." WScript.Quit(1) End If sPrefix = "LDAP://" 'Get distinguished name for config container and build ADsPath to partitions container. Set root= GetObject(sPrefix & "rootDSE") If (Err.Number <> 0) Then BailOnFailure Err.Number, "on GetObject method" End If sConfigDN = root.Get("configurationNamingContext") If (Err.Number <> 0) Then BailOnFailure Err.Number, "on Get method" End If sContainerDN = "cn=Partitions," & sConfigDN ''''''''''''''''''''''''''''''''''''''' 'Bind to the container ''''''''''''''''''''''''''''''''''''''' Set cont= GetObject(sPrefix & sContainerDN) If (Err.Number <> 0) Then BailOnFailure Err.Number, "on GetObject method for partitions container" End If ''''''''''''''''''''''''''''''''''''''' 'Add the user ''''''''''''''''''''''''''''''''''''''' Set newCrossRef = cont.Create("crossRef", "cn=" & sCrossRefCN) If (Err.Number <> 0) Then BailOnFailure Err.Number, "on Create method" End If newCrossRef.put "dnsRoot", sCrossRefDNSRoot If (Err.Number <> 0) Then BailOnFailure Err.Number, "on Put method call for dnsRoot" End If newCrossRef.put "nCName", sCrossRefNCName If (Err.Number <> 0) Then BailOnFailure Err.Number, "on Put method call for nCName" End If newCrossRef.SetInfo If (Err.Number <> 0) Then BailOnFailure Err.Number, "on SetInfo method" End If strText = "The crossRef " & sCrossRefCM & " was successfully added." strText = strText & vbCrLf & "The crossRef has the following properties:" 'Refresh the property cache newCrossRef.GetInfo count = newCrossRef.PropertyCount If (Err.Number <> 0) Then BailOnFailure Err.Number, "on PropertyCount method" End If strText = strText & "Number of properties: " & count 'Set v = user.Next() 'cprop = 1 'If (Err.Number <> 0) Then ' BailOnFailure Err.Number, "on Next method" 'End If 'While (Not (IsNull(v)) And Err.Number = 0) ' cprop = cprop+1 ' Set v = user.Next() 'If (Err.Number <> 0) Then ' BailOnFailure Err.Number, "on Next method" 'End If 'Wend For cprop=1 to count Set v = newCrossRef.Next() If IsNull(v) Then Exit For End If strText = strText & vbCrLf & cprop & ") " & v.Name & " " cattr = 0 attr = v.Values For Each attrval In attr cattr = cattr+1 if (v.adstype=3) then strText = strText & vbCrLf & " " & attrval.caseignorestring end if if (v.adstype=1) then strText = strText & vbCrLf & " " & attrval.DNstring end if if (v.adstype=7) then strText = strText & vbCrLf & " " & attrval.Integer end if if (v.adstype=6) then strText = strText & vbCrLf & " " & attrval.Boolean end if if (v.adstype=9) then strText = strText & vbCrLf & " " & attrval.UTCTime end if if (v.adstype=10) then strText = strText & vbCrLf & " " & "Type: LargeInteger" end if if (v.adstype=8) then strText = strText & vbCrLf & " " & "Type: OctetString" end if if (v.adstype=25) then strText = strText & vbCrLf & " " & "Type: NTSecurityDescriptor" end if Next Next show_items strText, "Create crossRef" ''''''''''''''''''''''''''''''''''''''' 'Display subroutines ''''''''''''''''''''''''''''''''''''''' Sub show_items(strText, strName) MsgBox strText, vbInformation, "Create CrossRef" End Sub Sub BailOnFailure(ErrNum, ErrText) strText = "Error 0x" & Hex(ErrNum) & " " & ErrText MsgBox strText, vbInformation, "ADSI Error" WScript.Quit End Sub