Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Auslesen der OU - VBS

Empfohlene Antworten

Veröffentlicht

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


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

  • Autor
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.


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?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.