Zum Inhalt springen

Auslesen der OU - VBS


Hunduster

Empfohlene Beiträge

Hi zusammen,

ich habe ein Script in VBS geschrieben, welches für eine Terminal Server Farm gedacht ist. Es gibt eine obergeordnete OU in der weitere OU's liegen.

Die "Chef OU" verteilt an alle anderen über die AD ein Laufwerk P:

Unsere Kunden arbeiten mit einer Software von uns welche auf diesem Laufwerk liegt. Bei der alten Batch Datei kam es öfters vor, dass sie schneller lief als das Laufwerkmapping was nicht so cool war, da die Batch einen Reg Eintrag aufrief der in dem Laufwerk lag.

Ich habe nun die Regeinträge im VBS definiert und auch bestimmt, dass sie nur ausgeführt werden, wenn das Laufwerk P: verfügbar ist da halt auch dort die Software liegt.

Nun muss ich noch einen Weg finden, im Script bestimmte Reg Einträge nach OU zuzuweisen. Also eben bestimmte Reg Einträge für bestimmte OUs.

Ich habe sowas noch nie gemacht und auch noch nicht im inet gefunden.

Hat vllt jemand von Euch solch eine Abfrage und Zuweisung zur Hand (if & then)?

Bisheriges Script:

'Folgende Option meldet unter anderem nur Variablen, wenn diese verwendet, aber nicht vorher deklariert wurden!

option explicit


'Sicherheitshalber mal einen Timeout für das Skript setzen

WScript.Timeout = 60


'Aufruf der Routine...

call MapReg()


'...und Ihre direkte Implementation.

public sub MapReg()


	'Dimensionieren der lokalen Variablen...

	dim datUntil, objFSO, objWSH, objNET


	'...und eine maximale Laufzeit für die Schleifenbehandlung definieren (manuelles Timeout, hier: in 30 Sekunden ab jetzt)

	datUntil = dateadd("s", 30, now())


	'Objektinstanzen für die Helper beschaffen.

	set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

	set objWSH = WScript.CreateObject("WScript.Shell")

	set objNET = WScript.CreateObject("WScript.Network")


	'Fehlerbehandlung deaktiveren

	on error resume next


	'Wenn schon zufällig P: schon belegt ist, geben wir es erstmal wieder frei...

	if objFSO.DriveExists("P:") then objNET.RemoveNetworkDrive "P:", true, true


	'...und legen es auf unseren Pfad fest!

	objNET.MapNetworkDrive "P:", "\\Server\Pfad"


	'Wenn bis hierhin kein Fehler passiert ist, können wir getrost die Schleife betreten.

	if err.number = 0 then


		'Starte Schleife...

		do

			if objFSO.DriveExists("P:") then


				'Das Laufwerk schein existent, also schnell mal den Basispfad in der Registry gesetzt...

				dim strBaseKey			

				strBaseKey =  "HKEY_CURRENT_USER\Software\Schlüssel\"


				'...und relativ dazu dann die Einträge gemacht!

				objWSH.RegWrite strBaseKey & "Installation\Count", "32", "REG_SZ"

				objWSH.RegWrite strBaseKey & "Installation\Anwender0", "Serial & Company", "REG_SZ"

				objWSH.RegWrite strBaseKey & "Installation\Anwender1", "Key & Company", "REG_SZ"


				objWSH.RegWrite strBaseKey & "Login\Project0001\DataSource", "Citrix", "REG_SZ"

				objWSH.RegWrite strBaseKey & "Login\Project0001\User", "Toni Test", "REG_SZ"


				'Schnell noch aufräumen...

				set objFSO = nothing

				set objWSH = nothing

				set objNET = nothing


				'...und auf dem kürzesten Weg aus der Prozedur springen - Fertig! =)

				exit sub

			end if


			'...scheinbar war das Laufwerk noch nicht eingehängt, also warten wir nochmal eine halbe Sekunde...

			WScript.sleep cint(500)


		'...und versuchen es einfach nochmal, solange die Grenzzeit nicht überschritten wurde

		loop while now() < datUntil

	end if


	'Fehlerbehandlung wieder aktiveren

	on error goto 0


	'Aufräumen

	set objFSO = nothing

	set objWSH = nothing

	set objNET = nothing

end sub

 

Bearbeitet von Hunduster
Link zu diesem Kommentar
Auf anderen Seiten teilen


Set WshShell_CMD = WScript.CreateObject("WScript.Shell")

Set OU_String_exec = WshShell_CMD.Exec("dsquery computer domainroot -name %ComputerName% -gc")

OU_String = OU_String_exec.StdOut.ReadAll

So bekommst du z.B. den FQDN des Rechners ausgegeben. Den String kannst du ja nach belieben zerpflücken...

Gibt sicher noch eine elegantere Lösung, dass war aber des erste was mir eingefallen ist (bzw. was ich aus meiner eigenen Sammlung gegraben habe ^^).

MfG erratum

Link zu diesem Kommentar
Auf anderen Seiten teilen

So bekommst du z.B. den FQDN des Rechners ausgegeben. Den String kannst du ja nach belieben zerpflücken...

Gibt sicher noch eine elegantere Lösung, dass war aber des erste was mir eingefallen ist (bzw. was ich aus meiner eigenen Sammlung gegraben habe ^^).

Ok aber dadurch habe ich doch "nur" die Ausgabe des FQDN aber keine automatische Zuweisung von Reg Einträgen.

Ich dachte an sowas:

strUser = "LDAP://" & CreateObject("ADSystemInfo").UserName 


If GetObject("LDAP://CN=Gruppe1,OU=EineOU,DC=fima,DC=local").IsMember(strUser)

Then WScript.Echo "In Gruppe 1" 

Aber ich weiß dann nicht weiter also wie ich "In Gruppe 1" definiere um das Script zu übergeben.

Link zu diesem Kommentar
Auf anderen Seiten teilen


Set WshShell_CMD = WScript.CreateObject("WScript.Shell")

Set OU_String_exec = WshShell_CMD.Exec("dsquery computer domainroot -name %ComputerName% -gc")

OU_String = OU_String_exec.StdOut.ReadAll

Im FQDN hast doch alle Informationen die du brauchst. Die Rückgabe sieht ja in etwa so aus:
"CN=Computer1,OU=OrgEinhXYZ,OU=OberOrg,DC=freaky,DC=com"
Dann durchsuche doch den zurückgegebenen String:
If instr(OU_string,"OrgEinhXYZ") then

  [put in Registryeinträge here]

  ....

end if

Oder ist das nicht das, was du suchst?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...