Gebruikers aanmaken via ADO in Active Directory

Pagina: 1
Acties:
  • 1.256 views

Onderwerpen


Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Goedemorgen allemaal,

Voor een project voor mijn studie is het gevraagd om een script te maken wat het mogelijk maakt om x aantal gebruikers en computers te creëren in Active Directory. Dit moet gerealiseerd worden via het programmeertaal ADO (Activex Data Object)

Al dagen lang ben ik bezig met het zoeken op internet, maar tot nu wat ik heb gevonden over ADO is dat een tussenlaag vormt tussen een programmeertaal en de programmeur. En dat ADO vooral wordt gebruikt om queries uit te voeren en verder dingen op te zoeken in een database, maar niet echt om gegevens aan te maken.

Ik dacht er zelf aan om een powershell script aan te maken om een x aantal gebruikers en computers toe te voegen in AD, aangezien powershell goed samenwerkt met ADO. (bron: het boek: powershell step voor step)

Kunnen jullie mij misschien wat tips geven waar ik precies moet zoeken of zit ik helemaal verkeerd te denken?

Ik hoor het graag.

Mvg,

Acties:
  • 0 Henk 'm!

  • lier
  • Registratie: Januari 2004
  • Laatst online: 19:05

lier

MikroTik nerd

Eerste hit op Google: ADO search tips.
Misschien kan je daar wat verder mee komen (overigens had ik die informatie binnen de minuut gevonden, waar heb je naar/op gezocht !?).

Tot slot is het niet helemaal duidelijk wat je zelf al geprobeerd hebt en wordt over het algemeen geen huiswerk voor anderen op GoT gedaan...

Eerst het probleem, dan de oplossing


Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hoi lier,

Bedankt voor je snelle response. Even snel heb ik gekeken naar die website , maar volgens mij die gaat ook over het queries en opvragen van de informatie over de gebruikers.

Zoals in mijn bericht staat, was ik dit al tegengekomen, maar ik ben juist opzoek naar informatie hoe ik via ADO een x aantal gebruikers/computers kan aanmaken in Active Directory.

Op google heb ik vooral gezocht op zoekwoorden (ado active directory, ado: creating users in ad) helaas zonder resultaat..
Het boek van powershell step voor step heb ik bepaalde hoofdstukken doorgenomen op advies van school, maar hier staat er weinig over ado in...

Overigens, dat ik hierover een topic start, dan wil ik niet zeggen dat andere mijn huiswerk moeten doen, anders leer ik niets van ;)

Acties:
  • 0 Henk 'm!

  • SteeringWheel
  • Registratie: Augustus 2004
  • Laatst online: 22-05 16:46
lawkexarib schreef op maandag 10 mei 2010 @ 08:51:
Voor een project voor mijn studie is het gevraagd om een script te maken wat het mogelijk maakt om x aantal gebruikers en computers te creëren in Active Directory. Dit moet gerealiseerd worden via het programmeertaal ADO (Activex Data Object)
Dat kan volgens mij niet, je kan met ADO alleen informatie eruit halen. Met ADSI kan het wel.

A forum post should be like a skirt. Long enough to cover the subject material, but short enough to keep things interesting.


Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
hoi SteeringWheel,

Het vermoeden heb ik ook dat je via ADO dit niet kan realiseren..Vandaar ben ik aan de slag gegaan met VBS scripts om dit te krijgen of is het beter om dit via ADSI te doen?

Acties:
  • 0 Henk 'm!

  • SteeringWheel
  • Registratie: Augustus 2004
  • Laatst online: 22-05 16:46
Jep, vbs icm adsi is één van de mogelijkheden.

A forum post should be like a skirt. Long enough to cover the subject material, but short enough to keep things interesting.


Acties:
  • 0 Henk 'm!

  • Craven
  • Registratie: Februari 2007
  • Laatst online: 17:28
csvde is ook leuke maar goed er zijn zoveel mogelijkheden op dit gebied.

Acties:
  • 0 Henk 'm!

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 22-01-2024

Korben

() => {};

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Heeft iemand misschien een tutorial over hoe ik via een script een x aantal gebruikers en/of computers kan aanmaken in AD met VBS icm met ADSI?

Ik hoor het graag.

Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 19:02
Kijk eens hoe MS het doet: Step-by-Step Guide to Bulk Import and Export to Active Directory

Er zijn met Google behoorlijk wat van dit soort scripts te vinden i.c.m. Excel.
In Excel vul je alle gegevens in van de users, deze worden dan automatisch ingevoerd in de AD.

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hoi mhoogendam,

Bedankt voor die link. Vanavond zal ik ernaar kijken of het gaat lukken :)

Acties:
  • 0 Henk 'm!

  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 19-04 19:18
Ik doe dit soort dingen in C#.
Als je alleen users, groups en computers wil kan dat erg makkelijk met UserPrincipal GroupPrincipal en ComputerPrincipal's.

Is genoeg over te vinden.

Acties:
  • 0 Henk 'm!

  • lier
  • Registratie: Januari 2004
  • Laatst online: 19:05

lier

MikroTik nerd

Maxxi schreef op maandag 10 mei 2010 @ 20:41:
Ik doe dit soort dingen in C#.
Als je alleen users, groups en computers wil kan dat erg makkelijk met UserPrincipal GroupPrincipal en ComputerPrincipal's.

Is genoeg over te vinden.
Als "doorgewinterde" C# ontwikkelaar...sinds wanneer is dat een script taal ?
Voor een project voor mijn studie is het gevraagd om een script te maken

Eerst het probleem, dan de oplossing


Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Eerder had mhoogendam de link: http://technet.microsoft....ibrary/bb727091.aspx#EBAA aangedragen, helaas werkte dit niet op thuis op een virtuele windows server 2008 nl. Elke keer kreeg ik de foutmelding over compilatiefout...toen ben ik verder gaan zoeken en kwam terecht op de website: http://www.activexperts.c...cripts/usersgroups/users/
Deze website is duidelijker en geeft directe voorbeelden om het uit te voeren, alleen mijn doel is nog niet helemaal gelukt...ben wel een stap verder gekomen dan aanvankelijk...

Momenteel lukt het mij om een OU en een daarin een gebruiker aan te maken met de status disabled, maar deze gebruiker wil ik zelf voorzien van een wachtwoord.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Set objDomain = GetObject("LDAP://dc=school,dc=local")
Set objOU = objDomain.Create("organizationalUnit", "ou=Management")
objOU.SetInfo
 
Set objOU = GetObject("LDAP://OU=Management,dc=school,dc=local")
Set objUser = objOU.Create("User", "cn= AckermanPilar")
objUser.Put "sAMAccountName", "AckermanPila"
objUser.SetInfo
 
Set objOU = GetObject("LDAP://OU=Management,dc=school,dc=local")
Set objGroup = objOU.Create("Group", "cn=atl-users")
objGroup.Put "sAMAccountName", "atl-users"
objGroup.SetInfo
 
objGroup.Add objUser.ADSPath


Om een w.w. toe te kennen gebruik ik extra parameter (ook van die website gekeken) dus de script ziet er al volgt uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Set objDomain = GetObject("LDAP://dc=school,dc=local")
Set objOU = objDomain.Create("organizationalUnit", "ou=Management")
objOU.SetInfo
 
Set objOU = GetObject("LDAP://OU=Management,dc=school,dc=local")
Set objUser = objOU.Create("User", "cn= AckermanPilar")
objUser.Put "sAMAccountName", "AckermanPila"
objUser.SetPassword "i5A2sj*!"
objUser.SetInfo
 
Set objOU = GetObject("LDAP://OU=Management,dc=school,dc=local")
Set objGroup = objOU.Create("Group", "cn=atl-users")
objGroup.Put "sAMAccountName", "atl-users"
objGroup.SetInfo
 
objGroup.Add objUser.ADSPath


Wanneer ik dit vbs script draai, dan krijg ik de melding dat gebruiker niet bestaat...volgens mij klopt dit ook, want ik denk dat het w.w. parameter een w.w. kan toevoegen aan gebruiker als deze gebruiker bestaat ...
Ik zou dus willen dat bij het aanmaken van een gebruiker dat deze voorzien wordt van een w.w.

Ongetwijfeld, zal het makkelijker zijn dit uit te voeren in C#, maar dit behoort niet tot de mogelijkheden voor die project :) toch bedankt voor het meedenken :)

Hopelijk is mijn verhaal duidelijk en alvast bedankt voor het meedenken

[ Voor 5% gewijzigd door lawkexarib op 11-05-2010 11:17 ]


Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 19:02
Wat gebeurt er wanneer je een extra setinfo erin zet? (regel 8 )
ps. Zet je code in [code=VBS] tags, dit leest makkelijker.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Set objDomain = GetObject("LDAP://dc=school,dc=local")
Set objOU = objDomain.Create("organizationalUnit", "ou=Management")
objOU.SetInfo
 
Set objOU = GetObject("LDAP://OU=Management,dc=school,dc=local")
Set objUser = objOU.Create("User", "cn= AckermanPilar")
objUser.Put "sAMAccountName", "AckermanPila"
objUser.SetInfo
objUser.SetPassword "i5A2sj*!"
objUser.SetInfo
 
Set objOU = GetObject("LDAP://OU=Management,dc=school,dc=local")
Set objGroup = objOU.Create("Group", "cn=atl-users")
objGroup.Put "sAMAccountName", "atl-users"
objGroup.SetInfo
 
objGroup.Add objUser.ADSPath 

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hoi mhoogendam,
Ik heb het getest hier op het werk en het werkt goed.
Als ik het goed begrijp, moet ik voor elke parameter bij een gebruiker in kwestie het commando objUser.SetInfo gebruiken om die parameter op te slaan?
Bovenstaande voorbeeld geeft nu enkel het w.w. op, maar kan me voorstellen dat je ook andere info (adres, info, website wil mee aanmaken toch)

Heel erg bedankt iig :)

Acties:
  • 0 Henk 'm!

  • SteeringWheel
  • Registratie: Augustus 2004
  • Laatst online: 22-05 16:46
Regel 8 en 9 omdraaien Spuit elf O-)
Hoeft alleen maar bij password, adres en dergelijke kun je achter elkaar declareren en dan eenmaal setinfo.

[ Voor 75% gewijzigd door SteeringWheel op 11-05-2010 13:54 ]

A forum post should be like a skirt. Long enough to cover the subject material, but short enough to keep things interesting.


Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 19:02
lawkexarib schreef op dinsdag 11 mei 2010 @ 13:39:
Hoi mhoogendam,
Ik heb het getest hier op het werk en het werkt goed.
Als ik het goed begrijp, moet ik voor elke parameter bij een gebruiker in kwestie het commando objUser.SetInfo gebruiken om die parameter op te slaan?
Bovenstaande voorbeeld geeft nu enkel het w.w. op, maar kan me voorstellen dat je ook andere info (adres, info, website wil mee aanmaken toch)

Heel erg bedankt iig :)
Ik denk zelf dat dat niet nodig zal zijn, maar testen zal dit snel verhelderen.
Je probeerde alleen een password in te voeren aan een gebruiker die (nog) niet bestaat.
Na het creëren van de gebruiker kan je denk ik meerdere info tegelijk toevoegen.

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hoi mhoogendam,
Het is nu mij thuis ook gelukt om een script te maken waarmee ik 25 gebruikers kan toevoegen in AD met hun eigen wachtwoord. Ik zoek alleen nog een extra parameter wat ervoor moet zorgen dat de gebruikers bij de volgende login hun wachtwoord dienen te wijzigen..

Ik heb al gekeken op http://www.activexperts.c...cripts/usersgroups/users/ helaas staat het hier niet op. Waarschijnlijk is het een kleine parameter, maar ik kan het zo niet vinden. Ik blijf het zoeken, maar ik dacht misschien weetje je welk parameter ik nodig heb...

Ik hoor graag van je.

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hallo,

Ik heb het uitgezocht en heb het parameter objUser.put "pwdLastSet", -1 gevonden. Ik kan bijv wel inloggen met de gebruiker Jan met het w.w. Jan1981@!, maar daarna krijg ik niet de vraag dat het w.w. dient gewijzigd te worden....Zou een van jullie mij daar wilt voorzien van feedback.

Ik gebruik dus de volgende script

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
Set objDomain = GetObject("LDAP://dc=school,dc=local")
Set objOU = objDomain.Create("organizationalUnit", "ou=Schoolopdrachten")
objOU.SetInfo
Set objOU = GetObject("LDAP://OU=Schoolopdrachten,dc=school,dc=local")
Set objUser = objOU.Create("User", "cn= JanKees")
objUser.Put "sAMAccountName", "Jan"
objUser.SetInfo
objUser.SetPassword "Jan1981@!*"
objUser.SetInfo
objUser.Put "pwdLastSet", -1 

Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 19:02
Ik kom dit tegen wanneer ik zoek op "VBS pwdLastSet"

Note 5: When you set pwdLastSet to zero it forces users to change their passwords at next logon.
http://www.computerperformance.co.uk/ezine/ezine50.htm

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hoi mhoogendam,

Wanneer ik die -1 omzet naar 0 dan werkt het idd.
Heel erg bedankt tot zo ver :)

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hoi mhoogendam,

Daar ben ik weer!! Sorry voor het te veel vragen, maar heb weinig ervaring met visual basic.

Nu heb ik een script aangemaakt waarmee ik aantal computeraccounts kan aanmaken in AD. Dit gaat goed, alleen ik wil niet dat ze bij default uitgeschakeld zijn zoals nu het geval is.
Het is hetzelfde script als voor de gebruikers, alleen heb ik de parameters van users veranderd naar die van computers.

VBScript:
1
2
3
4
5
6
7
8
Set objDomain = GetObject("LDAP://dc=school,dc=local")
Set objOU = objDomain.Create("organizationalUnit", "ou=schoolopdrachten2")
objOU.SetInfo

Set objOU = GetObject("LDAP://OU=schoolopdrachten2,dc=school,dc=local")
Set objComputer = objOU.Create("Computer", "cn= FINAN01")
objComputer.Put "sAMAccountName", "FINAN01"
objComputer.SetInfo


Ik zal verder zoeken, maar wellicht kun je aangeven om welk extra parameter het gaat waarbij ik aangeven dat comptuersaccounts ingeschakeld moeten zijn

Ik hoor het graag.

[ Voor 12% gewijzigd door lawkexarib op 13-05-2010 14:05 ]


Acties:
  • 0 Henk 'm!

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
VBScript gebruiken om AD gebruikers aan te maken kan. Maar veel beter kan je je gaan verdiepen in PowerShell. Volledig .Net framework om te gebruiker, een stuk moderner en nog volop in ontwikkeling.

Zie bijvoorbeeld:
http://technet.microsoft....e/2007.06.powershell.aspx
http://www.microsoft.com/...pics/winpsh/searchad.mspx

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
hoi PolarBear,

Ongetwijfeld zal Powershell het beter doen dan een visual basic script, maar dit is een opdracht voor mijn studie waar ik het helaas met visual basic script moet realiseren..

Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 10:42
lawkexarib schreef op donderdag 13 mei 2010 @ 14:01:
Hoi mhoogendam,

Daar ben ik weer!! Sorry voor het te veel vragen, maar heb weinig ervaring met visual basic.

Nu heb ik een script aangemaakt waarmee ik aantal computeraccounts kan aanmaken in AD. Dit gaat goed, alleen ik wil niet dat ze bij default uitgeschakeld zijn zoals nu het geval is.
Het is hetzelfde script als voor de gebruikers, alleen heb ik de parameters van users veranderd naar die van computers.

VBScript:
1
2
3
4
5
6
7
8
Set objDomain = GetObject("LDAP://dc=school,dc=local")
Set objOU = objDomain.Create("organizationalUnit", "ou=schoolopdrachten2")
objOU.SetInfo

Set objOU = GetObject("LDAP://OU=schoolopdrachten2,dc=school,dc=local")
Set objComputer = objOU.Create("Computer", "cn= FINAN01")
objComputer.Put "sAMAccountName", "FINAN01"
objComputer.SetInfo


Ik zal verder zoeken, maar wellicht kun je aangeven om welk extra parameter het gaat waarbij ik aangeven dat comptuersaccounts ingeschakeld moeten zijn

Ik hoor het graag.
Je moet nog twee extra flags setten om je account te enablen. Hier uitleg en voorbeeldje. Is iets van 1-2 minuten google werk ofzo :)

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hoi jip_86,

Ik heb die uitleg gelezen en het was idd nodig om twee flags neer te zetten.

Nu even iets anders.
Ik heb een ADO script gevonden die zoekt naar gebruikers met de status "disable"

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
On Error Resume Next

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.CommandText = _
    "<LDAP://dc=school,dc=local>;(&(objectCategory=User)" & _
        "(userAccountControl:1.2.840.113556.1.4.803:=2));Name;Subtree"  
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst
Do Until objRecordSet.EOF
    Wscript.Echo objRecordSet.Fields("Name").Value
    objRecordSet.MoveNext
Loop


Bovenstaande script heb ik vanaf de command-line uitgevoerd als .vbs extensie en laat zien de namen van die gebruikers die disable hebben in een klein window scherm. Het werkt dus goed, maar ik vraag mij af of dit juist is. Ik dacht dat ik een lijst binnen command-line zou te zien krijgen met alle gebruikers die de status disable hebben. Ik vraag me hier af of ik het juiste extensie gebruik. Ik heb het op internet gezocht, maar het is niet helemaal duidelijk voor mij, aangezien ADO ook kan werken met andere scriptalen kan werken...

Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 19:02
lawkexarib schreef op donderdag 13 mei 2010 @ 20:52:
Hoi jip_86,

Ik heb die uitleg gelezen en het was idd nodig om twee flags neer te zetten.

Nu even iets anders.
Ik heb een ADO script gevonden die zoekt naar gebruikers met de status "disable"

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
On Error Resume Next

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.CommandText = _
    "<LDAP://dc=school,dc=local>;(&(objectCategory=User)" & _
        "(userAccountControl:1.2.840.113556.1.4.803:=2));Name;Subtree"  
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst
Do Until objRecordSet.EOF
    Wscript.Echo objRecordSet.Fields("Name").Value
    objRecordSet.MoveNext
Loop


Bovenstaande script heb ik vanaf de command-line uitgevoerd als .vbs extensie en laat zien de namen van die gebruikers die disable hebben in een klein window scherm. Het werkt dus goed, maar ik vraag mij af of dit juist is. Ik dacht dat ik een lijst binnen command-line zou te zien krijgen met alle gebruikers die de status disable hebben. Ik vraag me hier af of ik het juiste extensie gebruik. Ik heb het op internet gezocht, maar het is niet helemaal duidelijk voor mij, aangezien ADO ook kan werken met andere scriptalen kan werken...
Het script wat je hebt is VBS. Er zijn verschillende manieren om een VBS script te draaien, namelijk cscript en wscript. Wanneer jij een VBS script dubbelklikt zal deze automatsch draaien via wscript.
Om het script te draaien in cscript zal je deze anders moeten aanroepen.
Kijk hier eens naar: http://msdn.microsoft.com.../xazzc41b%28VS.85%29.aspx

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
hoi mhoogendam,

Bedankt voor je reactie. Tis dan vreenmd dat bovenstaande script als een ADO script wordt aangeboden op de Microsoft website..maar goed

Hopelijk kun je mij helpen met onderstaande script. Waarschijnlijk is het makkelijk hoor, maar ik weet niet waar ik de veriable (-name) moet neerzetten. Zoals je ziet, verwijdert de script een computer account, maar ik wil het zo aanpassen dat hij meerdere computer accounts dient te verwijderen die met de naam (office) beginnen uit de OU=schoolopdrachten. Ondertussen blijf ik zoeken, maar ik heb het nog niet gevonden wat ik precies zoek.

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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.CommandText = _
 "SELECT distinguishedName, operatingSystemVersion FROM " _
 & "'LDAP://DC=fabrikam,DC=com' WHERE objectClass='computer' " _
 & "AND operatingSystemVersion = '4.0'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
 strComputer = objRecordSet.Fields("distinguishedName").Value
 Set objComputer = GetObject("LDAP://" ou=schoolopdrachten,dc=school,dc=local")
 objComputer.DeleteObject (0)
 objRecordSet.MoveNext
Loop


Alvast bedankt voor de moeite.

Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 19:02
lawkexarib schreef op maandag 17 mei 2010 @ 23:25:
hoi mhoogendam,

Bedankt voor je reactie. Tis dan vreenmd dat bovenstaande script als een ADO script wordt aangeboden op de Microsoft website..maar goed

Hopelijk kun je mij helpen met onderstaande script. Waarschijnlijk is het makkelijk hoor, maar ik weet niet waar ik de veriable (-name) moet neerzetten. Zoals je ziet, verwijdert de script een computer account, maar ik wil het zo aanpassen dat hij meerdere computer accounts dient te verwijderen die met de naam (office) beginnen uit de OU=schoolopdrachten. Ondertussen blijf ik zoeken, maar ik heb het nog niet gevonden wat ik precies zoek.

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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.CommandText = _
 "SELECT distinguishedName, operatingSystemVersion FROM " _
 & "'LDAP://DC=fabrikam,DC=com' WHERE objectClass='computer' " _
 & "AND operatingSystemVersion = '4.0'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
 strComputer = objRecordSet.Fields("distinguishedName").Value
 Set objComputer = GetObject("LDAP://CN="&strComputer&",OU=schoolopdrachten,DC=school,DC=local")
 objComputer.DeleteObject (0)
 objRecordSet.MoveNext
Loop


Alvast bedankt voor de moeite.
Ik zou eens kijken naar de functie LEFT in combinatie met IF.

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hoi mhoogendam,

Ik heb gekeken naar die website, maar om eerlijk te zijn, ik heb zou niet weten waar ik die functie moet aanroepen en dat combineren met IF
VBScript:
1
2
3
Dim MyString, LeftString
MyString = "VBScript"
LeftString = Left(MyString, 3) ' LeftString contains "VBS".


Ik dacht misschien bij regel 18...
Heb je anders een werkende voorbeeld waar ik die kan aanpassen? Ik heb nl niet eerder gewerkt met VBS

Ik hoor graag van je.

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Misschien een stomme vraag, maar het lukt mij niet om aan een bestaande gebruiker een land toevoegen aan zijn profiel.
Ik gebruik onderstaande code:

VBScript:
1
2
3
4
5
6
7
8
9
Const ADS_PROPERTY_APPEND = 3 
 
Set objUser = GetObject _
   ("LDAP://cn=testgebruiker,ou=schoolopdrachten,dc=school,dc=local") 
 
objUser.PutEx ADS_PROPERTY_APPEND, _
  "CountryCode", "Ierland"
 
objUser.SetInfo


Iemand nog een idee...

Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 19:02
lawkexarib schreef op dinsdag 18 mei 2010 @ 22:26:
Misschien een stomme vraag, maar het lukt mij niet om aan een bestaande gebruiker een land toevoegen aan zijn profiel.
Ik gebruik onderstaande code:

VBScript:
1
2
3
4
5
6
7
8
9
Const ADS_PROPERTY_APPEND = 3 
 
Set objUser = GetObject _
   ("LDAP://cn=testgebruiker,ou=schoolopdrachten,dc=school,dc=local") 
 
objUser.PutEx ADS_PROPERTY_APPEND, _
  "CountryCode", "Ierland"
 
objUser.SetInfo


Iemand nog een idee...
Kijk eens met een Active Directory Explorer naar het veld in je AD, als ik dat doe op mijn naam zie ik bij countryCode "528" staan, geen naam van een land.
Wanneer ik een beetje Google kom ik hier op uit: http://msdn.microsoft.com.../ms677987%28VS.85%29.aspx

Waarom gebruik je hiervoor een nieuw script, voeg het land gewoon toe tijdens het script om de user aan te maken?

Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 19:02
lawkexarib schreef op dinsdag 18 mei 2010 @ 21:51:
Hoi mhoogendam,

Ik heb gekeken naar die website, maar om eerlijk te zijn, ik heb zou niet weten waar ik die functie moet aanroepen en dat combineren met IF
VBScript:
1
2
3
Dim MyString, LeftString
MyString = "VBScript"
LeftString = Left(MyString, 3) ' LeftString contains "VBS".


Ik dacht misschien bij regel 18...
Heb je anders een werkende voorbeeld waar ik die kan aanpassen? Ik heb nl niet eerder gewerkt met VBS

Ik hoor graag van je.
Hier misschien een verduidelijking:
VBScript:
1
2
3
4
Dim MyString, LeftString
MyString = "VBScript" 'Dit is de string waarop je wilt filteren
LeftString = Left(MyString, 3) 'hier kijk je naar de linker 3 karakters van "Mystring"
MsgBox LeftString


Dit maakt het volgende:
VBScript:
1
2
3
4
5
6
7
8
9
Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("distinguishedName").Value
    LeftString = Left(strComputer, 7) 'Hier kijk je naar de linker 7 karakters van "strComputer"
    If LeftString = "Office" Then 'Wanneer deze karakters gelijk zijn aan "Office" worden deze verwijderd
        Set objComputer = GetObject("LDAP://CN="&strComputer&",OU=schoolopdrachten,DC=school,DC=local")
        objComputer.DeleteObject (0)
        objRecordSet.MoveNext
    End If
Loop

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hallo mhoogendam,

Tot nu toe ben ik niet aan toegekomen om bovenstaande te testen, maar waarom ik een gebruiker wil voorzien van een landcountry, omdat dit wordt gevraagd voor een opdracht...
Heel snel heb ik ook gekeken naar een gebruikers profiel waar geen landcode is opgegeven en ik zie bij hem een 0 staan...Wanneer ik deze gebruiker bijv NL als landcode opgeeft dan zie ik objecteditor in AD gewoon NL staan...

Dat ander stuk wat je hebt gepost over het verwijderen van pcs, zal ik vanavond ernaar kijken :)

[ Voor 10% gewijzigd door lawkexarib op 21-05-2010 14:14 ]


Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hallo mhoogendam,

Bedankt voor het aanpassen van de script dat je bepaalde computers met de naam office kunt verwijderen. Bij het uitvoeren van de onderstaande script dan verschijnt een error.

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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.CommandText = _
 "SELECT distinguishedName, operatingSystemVersion FROM " _
 & "'LDAP://DC=school,DC=local' WHERE objectClass='computer' " _
 & "AND operatingSystemVersion = '4.0'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst 
Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("distinguishedName").Value
    LeftString = Left(strComputer, 6) 'Hier kijk je naar de linker 7 karakters van "strComputer"
    If LeftString = "OFFICE" Then 'Wanneer deze karakters gelijk zijn aan "Office" worden deze 

verwijderd
        Set objComputer = GetObject("LDAP://CN="&strComputer&",OU=schoolopdrachten,DC=school,DC=local")
        objComputer.DeleteObject (0)
        objRecordSet.MoveNext
    End If
Loop


Error op de foto

Afbeeldingslocatie: http://img638.imageshack.us/img638/1571/errormh.th.jpg

Uploaded with ImageShack.us

Wanneer ik regel 16 verwijder dan krijg ik geen error, maar de computers met de naam office worden ook niet verwijderd uit Active Directory!

VBScript:
1
objRecordSet.MoveFirst 


Alvast bedankt en ik hoor graag van je.
btw, ik draai hier een virtuele nlse win2k8 server.

[ Voor 8% gewijzigd door lawkexarib op 24-05-2010 23:06 ]


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Alvast bedankt en ik hoor graag van je.
Dit is niet je persoonlijke helpdesk, dus iets meer zelfinzet mag wel worden verwacht.

Het lijkt me dan ook verstandiger dat mhoogendam hier geen antwoorden voorkauwt, maar dat je zelf gaat debuggen, onderzoeken, analyseren en aanpast. Mocht je daar vragen bij hebben, dan horen we het graag!

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hallo BtM909,

Het probleem wat ik heb met bovenstaande script is dat ik niet een specifieke error krijg bij het uitvoeren ervan om zodoende verdere informatie te gaan zoeken.
Ik heb verder gekeken naar de script en volgens mij kan hij de DN (distinguishedName) niet vinden en OS versie stond ook niet goed.
Na het aanpassen, zie de script er zo uit

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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.CommandText = "SELECT distinguishedName, operatingSystemVersion FROM " _
 & "'LDAP://DC=school,DC=local' WHERE objectClass='computer' " _
 & "AND operatingSystemVersion = '6.0'"

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False

Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst 

Do Until objRecordSet.EOF
    strComputer = objRecordSet.Fields("distinguishedName").Value
    LeftString = Left(strComputer, 6) 'Hier kijk je naar de linker 7 karakters van "strComputer"
    If LeftString = "OFFICE" Then 'Wanneer deze karakters gelijk zijn aan "Office" worden deze verwijderd
        Set objComputer = GetObject("LDAP://CN="&strComputer&",OU=mohamed2,DC=school,DC=local")
        objComputer.DeleteObject (0)
        objRecordSet.MoveNext
    End If
Loop


Btw, ik hoop niet dat mijn topic hier overkomt alsof jullie mijn helpdesk zijn, want zo beschouw jullie dus absoluut niet!! Ik waardeer het erg wanneer iemand mij probeert te helpen.

[ Voor 5% gewijzigd door lawkexarib op 25-05-2010 19:54 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Als op de MoveFirst die fout komt, dan is het nogal duidelijk: je SELECT levert dus niks op. Controleer dus of wat je op wilt vragen ook daadwerkelijk bestaat (bijv met de AD explorer die mhoogendam ook al linkt).
Btw, ik hoop niet dat mijn topic hier overkomt alsof jullie mijn helpdesk zijn, want zo beschouw jullie dus absoluut niet!! Ik waardeer het erg wanneer iemand mij probeert te helpen.
Je begint je laatste paar posts met
Hallo mhoogendam,
en je geeft nagenoeg geen info over wat je zelf al hebt geprobeerd, uitgezocht etc. dus ik moet je teleurstellen: je topic komt wel delijk over als een helpdesk topic. Dus ga nu eerst eens echt zelf op onderzoek uit voordat je weer post hier.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hallo Creepy,

Ik vind het vreemd dat Select niets oplevert, want wanneer ik de active directory verken met het programma AD Explorer dan zul je ook zien dat school.local het domein is en dat ik het juiste OU aanroep in de script. Met dit bedoel ik dus dat de error die verschijnt niet duidelijk is voor mij...


hieronder ook een printscreen ervan...
Afbeeldingslocatie: http://img121.imageshack.us/img121/125/39003829.th.jpg

Uploaded with ImageShack.us

Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 19:02
Probeer eens te achterhalen wat er fout gaat.

Zet in je code een echo neer wanneer je verwacht dat een variabele een bepaalde waarde heeft.
VBScript:
1
wscript.echo "Hallo wereld"    'zal een pop geven met de text: Hallo wereld

VBScript:
1
2
a = inputbox("Wie is dit?")    ' "a" is in dit geval de variabele en zal de waarde aannemen van hetgene wat je ingeeft
wscript.echo a    ' de waarde van "a" zal hier worden getoond.

Acties:
  • 0 Henk 'm!

  • lawkexarib
  • Registratie: Maart 2009
  • Laatst online: 08-03 23:59
Hoi mhoogendam,

Bedankt voor je feedback, maar zoals je hebt kunnen lezen en zien tot nu toe lukt het mij helaas niet om mijn script zo aan te passen dat ik kan zien waar het fout gaan of dat het gaat werken. Deze script heb ik ook van een website gehaald. Ik heb dus zelfs niet geschreven. Hierbij vraag ik je niet of je het voor mij wilt doen.
Dit allemaal is een beetje lastig voor mij, omdat ik op mijn werk geen vbs heb gebruikt en zal ook niet gaan gebruiken. Dit is alleen een opdracht voor mijn studie bedoeld.
Dit komt misschien raar over, maar ik heb ook weinig tijd om zich te verdiepen in vbs, hoewel het mij wel interessant lijkt, als ik hiervoor tijd had.
Misschien had je een ander antwoord verwacht, maar dit is eigenlijk de situatie waar ik momenteel in zit.
Mocht je mij niet verder willen helpen dan vind ik niet erg, want tot nu toe heb je mij goed geholpen en ik waardeer het erg!

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
lawkexarib schreef op woensdag 26 mei 2010 @ 14:11:
Hoi mhoogendam,

Bedankt voor je feedback, maar zoals je hebt kunnen lezen en zien tot nu toe lukt het mij helaas niet om mijn script zo aan te passen dat ik kan zien waar het fout gaan of dat het gaat werken. Deze script heb ik ook van een website gehaald. Ik heb dus zelfs niet geschreven. Hierbij vraag ik je niet of je het voor mij wilt doen.
Dit allemaal is een beetje lastig voor mij, omdat ik op mijn werk geen vbs heb gebruikt en zal ook niet gaan gebruiken. Dit is alleen een opdracht voor mijn studie bedoeld.
Dit komt misschien raar over, maar ik heb ook weinig tijd om zich te verdiepen in vbs, hoewel het mij wel interessant lijkt, als ik hiervoor tijd had.
Misschien had je een ander antwoord verwacht, maar dit is eigenlijk de situatie waar ik momenteel in zit.
Mocht je mij niet verder willen helpen dan vind ik niet erg, want tot nu toe heb je mij goed geholpen en ik waardeer het erg!
Ik vind 't sowieso wel welletjes geweest met handje-houden; ongeacht de goede intentie(s) van mhoogendam e.a. Daarbij verwijs ik naar Creepy in "Gebruikers aanmaken via ADO in Active Di..." en als extra hint: Debuggen: Hoe doe ik dat? en
mhoogendam schreef op woensdag 26 mei 2010 @ 07:53:
Probeer eens te achterhalen wat er fout gaat.

[ Voor 13% gewijzigd door RobIII op 26-05-2010 14:18 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.