derhoeppi
Goto Top

AD SiteName für Anmeldescript abfragen

Hallo Leute,

leider habe ich noch nichts brachbares gefunden. Wir haben eine AD mit unterschiedlichen DomainControllern. Es fängt beim 2003er R1 an geht über den 2008er (32/64bit) bis 2008R2 64bit. Mein Problem ist nun folgendes. Das Unternehmen wächst und wächst und wir haben einen zentralen AD Account mit dem wir Software installieren. Unsere CD-Ablage replizieren wir an die verschiedenen AD Sites, so dass Sie lokal vorliegen. Nun muss ich unsere Anmeldescript für den Installationaccount anpassen. Dazu soll bei der Anmeldung die AD Site abgefragt werden. Je nachdem soll dann das Laufwerk x auf Server 1 ein verweisen und wenn sich ein Kollege an einem anderen Standort anmeldet soll Laufwerk x auf Server 2 verweisen. Ich weiß das man den Sitename mit dsquery abfragen kann, aber das funktioniert auf normalen WinXP Clients nicht. Deshalb meine Frage, ob Ihr noch eine Alternative kennt?

Gruß
derhoeppi

Content-ID: 147671

Url: https://administrator.de/forum/ad-sitename-fuer-anmeldescript-abfragen-147671.html

Ausgedruckt am: 11.04.2025 um 14:04 Uhr

48507
48507 26.07.2010 um 14:44:43 Uhr
Goto Top
Es funktioniert auf normalen XP-Clients nicht, weil's dort nicht installiert ist. Haben die Rechner oder DCs an den verschiedenen Standorten ein eigenes System für Computernamen? Wenn ja, könntest du %COMPUTERNAME% oder %LOGONSERVER% abfragen.
manuel-r
manuel-r 26.07.2010 um 15:17:25 Uhr
Goto Top
Häng doch einfach an jeden Standort ein entsprechendes GPO für die jeweiligen Scripte. Wenn deine Sites und Subnets ordentlich gepflegt sind sollte jeder Client das für seinen aktuellen Standort gültige Objekt anwenden. Fertig.
derhoeppi
derhoeppi 26.07.2010 um 15:35:36 Uhr
Goto Top
Hallo,

es gibt nur eine OU in der sich die Rechner befinden. Den Logonserver kann ich natürlich abfragen und dann darauf reagieren. Wie frage ich den Logonserver ab?

Gruß
derhoeppi
48507
48507 26.07.2010 um 15:39:23 Uhr
Goto Top
IF "%LOGONSERVER%"=="DEINDC" (


)
60730
60730 26.07.2010 um 19:23:42 Uhr
Goto Top
Moin,
Zitat von @48507:
IF "%LOGONSERVER%"=="\\DEINDC" (


)
oder
ping %computername% -n 1 |find "192.168.10" && goto 10ernetz  
ping %computername% -n 1 |find "192.168.20" && goto 20ernetz  
rem usw.
Wobei - wenn der dc im einen standort ausfällt und dann die Scripte nicht laufen sollen, muß man anders reagieren.
Also eine Kombination aus den beiden Wegen.

Gruß
48507
48507 26.07.2010 um 20:41:01 Uhr
Goto Top
You are damn rite face-smile
manuel-r
manuel-r 27.07.2010 um 00:12:04 Uhr
Goto Top
es gibt nur eine OU in der sich die Rechner befinden

Und wo ist da das Problem? Du sollst das GPO ja nicht auf eine OU verknüpfen sondern auf einen Standort. Wenn im AD alles stimmt und korrekt konfiguriert ist, wird das jeweilige GPO nur angewandt, wenn sich ein Client am jeweiligen Standort befindet. Damit kann der Client dann das Script ausführen, dass für den jeweiligen Standort gedacht ist.
Noch besser (es geht doch um Softwareverteilung?!) erstellt man die Verteilungs-GPOs getrennt für jeden Standort und kann damit die verschiedenen lokalen Quellen angeben. Geschickter geht es eigentlich nicht.
Wenn es komplizierter sein muss kann man auch noch bspw. mit WMI-Filtern arbeiten und darüber dann die IP-Adresse abfragen und entsprechende Reaktionen konfigurieren. Das wäre aber m.E. schon wieder unnötig kompliziert.

Manuel
derhoeppi
derhoeppi 27.07.2010 um 13:33:16 Uhr
Goto Top
Wenn ich das:

IF "%LOGONSERVER%"=="\\DEINDC" (


)

in eine vbs Datei packe, dann gibt er mir nichts aus. Nun wollte ich einfach nur eine msgbox haben, die mir den Logonserver ausgibt. Leider gibt er mir da schon keinen Wert aus.

Gruß
derhoeppi
60730
60730 27.07.2010 um 14:32:24 Uhr
Goto Top
Moin,
Zitat von @derhoeppi:
Wenn ich das:

IF "%LOGONSERVER%"=="\\DEINDC" (
)
in eine vbs Datei packe, dann gibt er mir nichts aus. Nun wollte ich einfach nur eine msgbox haben, die mir den Logonserver
ausgibt. Leider gibt er mir da schon keinen Wert aus.

*hmm* also das ist keine vbs sonder eine cmd.
vbs als Loginscript ist eher nicht mein Fall
Und logonscripte mit Messageboxen schon zweimal nicht face-wink
den Unterschied von bat/cmd und einem vbs erkennt man doch auf den ersten Blick - bei vbs läuft nix - was vorher nicht definiert wurde.


Gruß
derhoeppi
derhoeppi
derhoeppi 27.07.2010 um 15:39:39 Uhr
Goto Top
Hallo TimoBeil,

wenn du nicht so der vba Fachmann bist, sondern auf die Kommandozeile schwörst, dann kannst du mir vielleicht ein Konstrukt verraten mit dem ich select case in der Kommandozeile abbilde. In vba ist es relativ einfach, aber in einer batch habe ich davon noch nie etwas gesehen.

Gruß
derhoeppi
48507
48507 28.07.2010 um 18:51:15 Uhr
Goto Top
Select Case kann man mit vielen IFs umgehen face-wink Wie dem auch sei:


dim WshShell
dim dc

set WshShell = CreateObject("WScript.Shell")  

dc = WshShell.ExpandEnvironmentStrings("%LOGONSERVER%")  

if dc = "\\DEINDC01" then  

tu dies, tu jenes...

end if
60730
60730 29.07.2010 um 00:57:35 Uhr
Goto Top
Moin,
Zitat von @derhoeppi:
Hallo TimoBeil,

wenn du nicht so der vba Fachmann bist,
? sagt wer - jemand der vbs und vba nicht von Batch unterscheiden kann? face-wink
sondern auf die Kommandozeile schwörst,
  • lese bitte genauer - vbs als Loginscript ist eher nicht mein Fall
Wenn überhaupt schwör ich drauf am liebsten für eine Aufgabe das beste Werkzeug zu nehmen - die Tatsache, dass ich mich hier oft im B Bereich aufhalte - sagt nix aus face-wink
dann kannst du mir vielleicht ein Konstrukt verraten mit dem ich select case in der Kommandozeile abbilde.
  • kommt auf den case an...
In vba ist es relativ einfach, aber in einer batch habe ich davon noch nie etwas gesehen.
VBA ist das VB für Applications, also "Office"
Und in Batch bzw. Shell ist das auch nix dolles.

Gruß