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-Key: 147671

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

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

Mitglied: 48507
48507 Jul 26, 2010 at 12:44:43 (UTC)
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.
Member: manuel-r
manuel-r Jul 26, 2010 at 13:17:25 (UTC)
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.
Member: derhoeppi
derhoeppi Jul 26, 2010 at 13:35:36 (UTC)
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
Mitglied: 48507
48507 Jul 26, 2010 at 13:39:23 (UTC)
Goto Top
IF "%LOGONSERVER%"=="DEINDC" (


)
Mitglied: 60730
60730 Jul 26, 2010 at 17:23:42 (UTC)
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ß
Mitglied: 48507
48507 Jul 26, 2010 at 18:41:01 (UTC)
Goto Top
You are damn rite face-smile
Member: manuel-r
manuel-r Jul 26, 2010 at 22:12:04 (UTC)
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
Member: derhoeppi
derhoeppi Jul 27, 2010 at 11:33:16 (UTC)
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
Mitglied: 60730
60730 Jul 27, 2010 at 12:32:24 (UTC)
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
Member: derhoeppi
derhoeppi Jul 27, 2010 at 13:39:39 (UTC)
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
Mitglied: 48507
48507 Jul 28, 2010 at 16:51:15 (UTC)
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
Mitglied: 60730
60730 Jul 28, 2010 at 22:57:35 (UTC)
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ß