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
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