vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB Skript (VBS)
Re: Organisationseinheiten überprüfen 
Autor: Tuete-
Datum: 14.03.07 10:05

Hi!
ich denke es ist besser wenn ich den vb-code noch ma hier rein schreibe, denn die erklärung reicht denk ich nich.



'#################################
'#                               #
'# Organisationseinheit anlegen  #
'#                               #
'#################################
 
'# Auf diesem Server werden die neue OUs anlegen
ldap = "LDAP://DC1W2K"
 
Set domainDNS = GetObject(ldap)
 
'# geben Sie die OU ein die angelgegt werden soll
name = InputBox("Bitte geben Sie den Namen der Organisationseinheit an, die" & _
  "angelegt werden soll!")
 
'# Es wird geprüft, ob die Anzulegende bereits besteht
If name="" then
 
	query = "objectCategory='organizationalUnit'"
else
	query = "objectClass='organizationalUnit' and name='" & name & "'"
    	On Error Resume Next
	MsgBox "Die von Ihnen gewünschte OU ist bereits vorhanden. Bitte wählen Sie" & _
  "eine andere."
	'mit OU verbinden, die gelöscht werden soll
	'hier OU löschen
	ldap = "LDAP://DC1W2K"
 
	'mit Domäne verbinden
	'Set domainDNS = GetObject(ldap)
	Set domainDNS = GetObject("LDAP://dc1w2k/DC=projekt,DC=local")
 
	'mit OU verbinden, die gelöscht werden soll
	Set ou = domainDNS.GetObject("organizationalUnit", "ou=" & name)
 
	'Rekursiv OU löschen
	DeleteOU ou.ADsPath
	MsgBox "OU gelöscht."
 
	Sub DeleteOU(ADsPath)
		Set ou = GetObject(ADsPath)
		ou.Filter = Array("organizationalUnit")
		For each subou in ou
			DeleteOU subou.ADsPath
		Next
 
		ou.Filter = Array()
		For each obj in ou
			ou.delete obj.class, obj.name
		Next
		Set container = Getobject(ou.parent)
		container.Delete "organizationalUnit", ou.name
	End Sub
	On Error Goto 0
End If
 
 
fehler:
'# top-level-OU anlegen
Set ou = domainDNS.Create("organizationalUnit", "ou=" & name)
ou.SetInfo
 
On Error Goto fehler 'bei diesem Aufruf wird ein Syntaxfehler ausgegeben. Ich 
' kann ihn mir nur nicht erklären.
 
'#####################################
'#                                   #
'# Nun werden die Benutzer angelegt  #
'#                                   #
'#####################################
 
'# Die Benutzer aus der Textdatei Klassenliste.txt wird geöffnet und ausgelesen
Dim fso, f, Zeile, Feld
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile ("Klassenliste.txt",1,0)
 
Do while not f.AtEndOfLine
Zeile = f.readLine
Feld = split(Zeile,",")
 
'# Das Feld 0 wird mit mit dem Benutzernamen aus der Textdatei gefüllt
Benutzer = Feld(0)
 
'# Das Feld 1 wird mit dem Vornamen aus der Textdatei gefüllt
Vorname = Feld(1)
 
'# Das Feld 2 wird mit dem Nachnamen aus der Textdatei gefüllt
Nachname = Feld(2)
 
'# Das Feld 3 wird mit dem Passwort aus der Textdatei gefüllt
Passwort = Feld(3)
 
Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort)
Loop
f.Close
Wscript.Quit(0)
 
Sub BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort)
Dim ouo, user
Set ouo = GetObject("LDAP://DC1W2K/OU=" & name & ",DC=projekt,DC=local")
Set user = ouo.Create("user", "CN=" & Vorname & " " & Nachname)
Dim WshShell, ret
Set WshShell = WScript.CreateObject("WScript.Shell")
 
'# Hier werden die Eigenschaften in der in der Allgemeinkartei eingerichtet ( 
' Name, Vorname, etc.)
user.Put "sAMAccountName", Benutzer
user.Put "displayName", Vorname & " " & Nachname
user.Put "givenName", Vorname
user.Put "sn", Nachname
 
'# Das Häkchen soll bei "Kennwort muss beim nächsten Anmelden erneuert werden" 
' setzen
'#user.Put "pwdLastSet", 0
 
'# Hier wird der Benutzeranmeldename mit Domäne eingerichtet
user.Put "userPrincipalName", Benutzer & "@projekt.local"
 
'# Dem Benutzer wird ein extra für den Benutzer zugehörigen Profilpfad 
' zugewiesen
user.Put "profilePath", "\\dc1w2k\profile2$\" & Benutzer
 
'# Skript legt eigenständig das Heimatverzeichnis des Benutzers und verbindet 
' dieses automatisch mit H: auf dem Server
user.Put "homeDirectory", "\\dc1w2k\home$\" & Benutzer
user.Put "homeDrive", "H:"
 
'# Die Einstellungen für den Benutzer werden durch SetInfo übernommen
user.SetInfo
user.SetPassword Passwort
 
'# Das Benutzerkonto wird mit dem nachfolgenden Befehl aktiviert
user.AccountDisabled = False
user.SetInfo
 
'# Das Script wird mit einer kleinen Zeitverzögerung wiederholt
WScript.Sleep(500)
ret = WshShell.Run ("verz.cmd " & Benutzer,0,1)
End Sub
Das Problem ist, dass wenn die OU noch nicht existiert, das Programm diese trotzdem löschen will. Dieses Problem wird zwar mit dem ersten On Error übergangen, aber danach erstellt das Script die Benutzer trotzdem (welche schon vorhanden sind) wenn ich jedoch auf die Fehlerroutine "fehler" eingehen will, dann wird mir bei On Error Goto fehler ein Syntaxfehler ausgegeben, welchen ich mir z.Z. nicht erklären kann, da ich schon durch mehrere foren gesurft bin und ich es genau nach anweisung gemacht habe.

Tuete-
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Organisationseinheiten überprüfen1.780Tuete-07.03.07 14:16
Re: Organisationseinheiten überprüfen1.678Tuete-14.03.07 10:05
Re: Organisationseinheiten überprüfen1.298Elwood14.03.07 17:56
Re: Organisationseinheiten überprüfen1.274Tuete-14.03.07 19:07

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel