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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 131271
Url: https://administrator.de/contentid/131271
Ausgedruckt am: 05.11.2024 um 15:11 Uhr
10 Kommentare
Neuester Kommentar
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
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/
Hi,
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.
Wenn obige Zuweisung möglich ist - ja.
LG Florian
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
set wsh = WScript.CreateObject ("WScript.Shell")
dc = wsh.ExpandEnvironmentStrings("%LogonServer%")
damit sollte nun alles gehen...ohne große string-funktions-orgien
Wenn obige Zuweisung möglich ist - ja.
LG Florian
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....
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.