racingrob
Goto Top

Logon script wsh

hallo zusammen, habe folgendes cript im einsatz:


Option Explicit

Dim oWshNetwork
Dim strNetworkPath
Dim strDriveLetter
Dim objADSysInfo
Dim sys
Dim dc
Dim WshNetwork

Set sys = CreateObject("ADSystemInfo")
dc = sys.GetAnyDCName
strNetworkPath = "\\"&dc&"\DFS-Stamm"
strDriveLetter = "K:"

wscript.echo "\\"&dc&"\DFS-Stamm"


nun zum problem:

mein netzwerk besteht aus mehren dienstellen mit eigenen DCs.

das logonscript soll eigentlich ein netzlaufwerk zum "vor Ort stehenden" DC verbinden...

wie aber schon GetAny erwaten lässt, gibt diese methode irgend einen DC zurueck...

Jetzt suche ich nach ner möglichkeit den "vor Ort stehenden" DC zu nutzen, ohne ihn total zu adressieren...

habe mir gedacht, am besten im script die ip des client auf dem es grad startet auszulesen, und dann den letzten teil der ip durch die "1" zu ersetzten, da "X.X.X.1" immer der DC ist

Jemand ne idee ob und wie das geht?

mfg robert

Content-Key: 131271

Url: https://administrator.de/contentid/131271

Printed on: April 25, 2024 at 04:04 o'clock

Member: laggflor
laggflor Dec 09, 2009 at 21:20:58 (UTC)
Goto Top
habe mir gedacht, am besten im script die ip des client auf dem es grad startet auszulesen, und dann den letzten teil der ip
durch die "1" zu ersetzten, da "X.X.X.1" immer der DC ist

Jein:
Die IP-Adresse zu bekommen ist relativ einfach:
http://msdn.microsoft.com/en-us/library/aa394595%28VS.85%29.aspx

Allerdings musst du bedenken dass ein Client - obwohl nur ein Netzwerkkabel - mehrere IP-Adressen auf mehreren Adaptern haben kann (Bluetooth, WLAN, LAN, DFÜ, VPN, ...)
Du müsstest dir die richtige rausklauben, der Rest sind String-Funktionen.

Variante 2:
Du könntest dir sämtliche DC auflisten, jeweils ein Ping mit 2048 Byte senden und den schnellsten nehmen.
Hier: http://support.microsoft.com/kb/227260 kannst du sehen dass Windows selbst bereits was ähnliches verwendet um eine "langsame Verbindung" zu erkennen (wegen Gruppenrichtlinien).

Variante 3:
Was passiert wenn du \\domain.name.local\Freigabe verwendest?
Ich vermut mal, dass hier einfach ein Round-Robin-DNS-Eintrag gesetzt ist und dass dir das nichts bringt - aber testen würd ichs.

Programmieren lass ich dich jetzt selbst.

LG Florian http://www.lagg.at/
Member: racingrob
racingrob Dec 10, 2009 at 05:45:59 (UTC)
Goto Top
moin moin, über nacht is mir noch ne andere idee gekommen...

kann ich nicht im ad festlegen, das die user als logonserver immer den der am schnellsten antwortet nehmen?

dann koennt ich im logonscript %logonserver% fuer den share benutzen...

leider bin ich nicht der programmierer, weil variante 2 mir eigentlich auch sehr gut gefällt...werd mich ma belesen und schauen obsch das gebastelt bekomme.

grüße robert
Member: racingrob
racingrob Dec 10, 2009 at 11:08:52 (UTC)
Goto Top
so, hab jetz die sites so weit gepfelgt, das logonserver immer der DC vor ort ist.

im script hole ich mir den DC jetz so:

set wsh = WScript.CreateObject ("WScript.Shell")
dc = wsh.ExpandEnvironmentStrings("%LogonServer%")

damit sollte nun alles gehen...ohne große string-funktions-orgien face-smile

mfg robert
Member: laggflor
laggflor Dec 11, 2009 at 14:24:15 (UTC)
Goto Top
Hi,

so, hab jetz die sites so weit gepfelgt, das logonserver immer der DC vor ort ist.
verrätst du uns noch wie?
Ich dachte der Logonserver wird per DNS-Abfrage an den Domänennamen festgestellt (und dieser ist wiederum ein Round-Robin-Eintrag der zufällig einen der Server zurückgibt)
Lass mich hier aber gerne korrigieren.

im script hole ich mir den DC jetz so:

set wsh = WScript.CreateObject ("WScript.Shell")
dc = wsh.ExpandEnvironmentStrings("%LogonServer%")

damit sollte nun alles gehen...ohne große string-funktions-orgien face-smile

Wenn obige Zuweisung möglich ist - ja.

LG Florian
Member: racingrob
racingrob Dec 14, 2009 at 06:07:49 (UTC)
Goto Top
Also, habe einfach im per DHCP den lokalen DC als primären DNS Server festgelegt und im AD in den Sites nur noch den lokalen DC stehen...

Werds die Woche mal so testen und geb dann noch mal Rückinfo!

Grüße
Member: racingrob
racingrob Dec 14, 2009 at 06:39:10 (UTC)
Goto Top
Also hat doch nicht so geklappt....Problem ist, dass Sich eine Client am Standort A am DC des Standortes B anmeldet.

Ich habe aber im AD unter "Standorte und Dienste" ein Site für Satndort A angelegt, in der nur der lokale DC angegeben ist....

Jemand ne Idee wie ich noch den Logonserver festlegen kann?

MfG Robert
Member: racingrob
racingrob Dec 14, 2009 at 07:08:59 (UTC)
Goto Top
OK, war wieder ein bissl schell, hab grad bemerkt das der "lokale DC" down war....

dann ist es natuerlich richtig, das ein andere DC als Logonserver genutzt wurde.

Damit ist mein Problem wieder das gleiche wie vorher...muss also irgendwie über die IP ran...

Hab aber noch keinen Plan wie ich da mit string Operationen das letzte Drippel der IP abschneide und durch ne 1 ersetzte....

Jemand nen Ansatz?

MfG Robert
Member: laggflor
laggflor Dec 14, 2009 at 07:35:43 (UTC)
Goto Top
Damit ist mein Problem wieder das gleiche wie vorher...muss also irgendwie über die IP ran...

Hab aber noch keinen Plan wie ich da mit string Operationen das letzte Drippel der IP abschneide und durch ne 1 ersetzte....

Andere Frage - was machst du dann wenn der lokale DC down ist? (Falls das öfter passiert)

Wenn du's so lösen willst:

String.split(".")
Splittet die IP in die einzelnen Teile als String-Array, siehe
http://msdn.microsoft.com/en-us/library/b873y76a.aspx

Dann den 4. Teil des Arrays ändern und
Join(".", StringArray)
http://msdn.microsoft.com/en-us/library/system.string.join.aspx

Hab gerade keine Zeit sonst würde ich dir das Code-Snippet basteln. Ist aber auch ne gute Übung falls du mit VBS wenig zu tun hast.

LG Florian.
Member: racingrob
racingrob Dec 17, 2009 at 08:18:12 (UTC)
Goto Top
hallo zusammen, hab mein script so weit geaendert, dass die ip operation funktioniert face-smile

nur will ich aber die so erstellte ip in den dazugehörigen dns namen wandeln!

dns reverse is konfiguriert...

jemand ne idee?
Member: laggflor
laggflor Dec 17, 2009 at 15:04:54 (UTC)
Goto Top
nslookup 124.123.122.121.in-addr.arpa

wobei die IP umgekehrt notiert werden muss.