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-ID: 131271

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

Ausgedruckt am: 05.11.2024 um 15:11 Uhr

laggflor
laggflor 09.12.2009 um 22:20:58 Uhr
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/
racingrob
racingrob 10.12.2009 um 06:45:59 Uhr
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
racingrob
racingrob 10.12.2009 um 12:08:52 Uhr
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
laggflor
laggflor 11.12.2009 um 15:24:15 Uhr
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
racingrob
racingrob 14.12.2009 um 07:07:49 Uhr
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
racingrob
racingrob 14.12.2009 um 07:39:10 Uhr
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
racingrob
racingrob 14.12.2009 um 08:08:59 Uhr
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
laggflor
laggflor 14.12.2009 um 08:35:43 Uhr
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.
racingrob
racingrob 17.12.2009 um 09:18:12 Uhr
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?
laggflor
laggflor 17.12.2009 um 16:04:54 Uhr
Goto Top
nslookup 124.123.122.121.in-addr.arpa

wobei die IP umgekehrt notiert werden muss.