Question VBS script to Windows form

leftygardner

New member
Joined
Oct 14, 2010
Messages
1
Programming Experience
Beginner
Hi - I'd like to create a Windows form based on my VBS code below.
The script basically takes a two user ID's in Active Directory and copies all its groups from one to the other. I was hoping I could change this code into a Windows Form? I have tried but not very good at programming stand alone apps. Would anyone be able to write the code? All I'm looking for is two text fields and a button which clones the AD accounts.

Usage of the VBS script: ClondeID.vbs CloneID TargetID (from command prompt)

on error resume next
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D


If Wscript.Arguments.Count < 2 Then
wscript.echo "cscript copymembership.vbs <ntid1> <ntid2>"
wscript.quit
end if


'convert ntid1 into dn name and bind to LDAP and checks its existence in AD

dn_ntid1 = dn(WScript.Arguments(0))

set objuser1=getobject("LDAP://" & dn_ntid1)
If Err.Number <> 0 Then
On Error GoTo 0
Wscript.Echo "NT ID not found : " & WScript.Arguments(0)
Wscript.Quit
End If

'convert ntid2 into dn name and bind to LDAP and checks its existence in AD

dn_ntid2 = dn(WScript.Arguments(1))

set objuser2=getobject("LDAP://" & dn_ntid2)
If Err.Number <> 0 Then
On Error GoTo 0
Wscript.Echo "NT ID not found : " & WScript.Arguments(1)
Wscript.Quit
End If


'get ntid1 group membership

arrMemberOf = objUser1.GetEx("memberOf")

If Err.Number <> E_ADS_PROPERTY_NOT_FOUND Then
For Each Group in arrMemberOf
'copy 1st membership of ntid1 to ntid2
'group and ntid2 already in distinguished name syntax

add group,dn_ntid2
Next
Else
WScript.Echo "No global group found in nt id : " & WScript.Arguments(0)
Err.Clear
wscript.quit
End If



'*****************************************
'functions, sub procedures below
'*****************************************


sub add(group,ntid2)
Const ADS_PROPERTY_APPEND = 3
set objgroup=getobject("LDAP://" & group)
objgroup.PutEx ADS_PROPERTY_APPEND, "member", Array(ntid2)
objGroup.setInfo
wscript.echo "NT id " & objuser2.sAMAccountName & " successfully added into : " & objgroup.sAMAccountName
end sub




function dn(ntid)
'convert nt id into LDAP distinguished name

dim objrootdse, strdnsdomain, objtrans, strnetbiosdomain
dim struserdn, objuser

'constants for translate object
Const ADS_NAME_INITTYPE_DOMAIN = 1
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1179 = 1


'determine dns domain name from rootdse object
set objrootdse = getobject("LDAP://RootDSE")
strdnsdomain = objrootdse.get("defaultnamingcontext")

'use the translate object to find the NETBIOS domain name from the DNS domain name
set objtrans=createobject("nametranslate")
objtrans.init ADS_NAME_TYPE_NT4, strdnsdomain
objtrans.set ADS_NAME_TYPE_1179, strdnsdomain
strnetbiosdomain = objtrans.get(ADS_NAME_TYPE_NT4)

'remove backslash
strnetbiosdomain =left(strnetbiosdomain, len(strnetbiosdomain)-1)

'use the translate object to convert nt id to the distinguished name for LDAP provider
objtrans.init ADS_NAME_INITTYPE_DOMAIN, strnetbiosdomain

objtrans.set ADS_NAME_TYPE_NT4, strnetbiosdomain & "\" & ntid
struserdn=objtrans.get(ADS_NAME_TYPE_1179)
Set objUser = GetObject("LDAP://" & strUserDN)

dn = objuser.distinguishedname
end function
 
Back
Top