steppe 10 Geschrieben 13. Juli 2007 Melden Teilen Geschrieben 13. Juli 2007 Hallo zusammen, da wir bald auf Active Directory umsteigen hab ich schonmal angefangen an einem Script rumzubasteln. Vorgabe: Je nach Standort sollen die Standortfileserver (wenn user nicht an home standort, dann kein persönliches laufwerk) verbunden werden. Dazu ist zu sagen: Ich habe von VBS/WSH keine Ahnung :) Ein bisschen was hab ich schon. Allerdings werden es mir zuviele IF Anfragen (wenn ich des für jeden Standort machen muss) Danke an den Ersteller der Vorlage die ich mir aus dem Board hier geklaut habe. 'Variablen festlegen dim wshnetwork dim username dim hp1 dim hp2 dim hp3 dim upath ' Fehlermeldungen unterdrücken on error resume next strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_NTDomain") ' Defintion was ist zu tun set wshnetwork=wscript.createobject("wscript.network") Set wshnet = CreateObject("WScript.Network") username = wshnet.UserName standort = objItem.DcSiteName if standort = "Stuttgart" then upath="\\filesrv_str\UserProfiles\"&username 'Synthax abhängig von der Freigabestruktur, username gibt dabei den vollständigen Benutzernamen des gegenwärtig angemeldeten Users wieder... hp1="\\filesrv_str\HP1" hp2="\\filesrv_str\HP2" hp3="\\filesrv_str\HP3" else <snip abfragen für jeden standort> end if ' evtl. vorhandene Netzlaufwerke entfernen wshnetwork.removenetworkdrive "I:" 'U: ist hier nur ein Beispiel, steht für User wshnetwork.removenetworkdrive "G:" 'Intern wshnetwork.removenetworkdrive "H:" 'Kunden wshnetwork.removenetworkdrive "M:" 'IT 'wartezeit zum trennen WScript.Sleep 500 ' Netzlaufwerke hinzufügen wshnetwork.mapnetworkdrive "I:", upath 'U: ist hier nur ein Beispiel, steht für User wshnetwork.mapnetworkdrive "G:", HP1 wshnetwork.mapnetworkdrive "H:", HP2 wshnetwork.mapnetworkdrive "M:", HP3 Zitieren Link zu diesem Kommentar
Zearom 10 Geschrieben 13. Juli 2007 Melden Teilen Geschrieben 13. Juli 2007 mmmh frage vergessen? oder wolltest du uns da Script mitteilen? :) Zitieren Link zu diesem Kommentar
marka 584 Geschrieben 13. Juli 2007 Melden Teilen Geschrieben 13. Juli 2007 [...] Allerdings werden es mir zuviele IF Anfragen (wenn ich des für jeden Standort machen muss) [...] Bei vielen Programmiersprachen gibt es die "Switch-Case" Anweisung. Das wäre das für Dich richtige. Aber: Mir ist nicht bekannt, dass in VbScrpt die Switsch-Case Anweisung existiert... Wie viele Standorte sind es denn? Ha! Gefunden: Select Case STR_Standort Case "Frankfurt" goto FFM Case "Paris" goto Paris Case "London" goto London Case Else End Select Hinweis: Da ich in VbScript noch nie mit Sprungmarken gearbeitet habe, ist obenstehender Code nur beispielhaft zu sehen!!! Zitieren Link zu diesem Kommentar
steppe 10 Geschrieben 13. Juli 2007 Autor Melden Teilen Geschrieben 13. Juli 2007 Vor lauter telefonieren :) multitasking ade ;) Meine Frage ist auch schwierig zu stellen. Das Script würde ich gerne in der Größe behalten. Und zwar mit folgendem "Trick". Ob dies überhaupt bei WSH möglich ist kA. ich würde gerne noch Variablen für die Standorte hinterlegen: dim stuttgart dim atlanta dim newyork stuttgart = filesrv_str atlanta = filesrv_atl newyork = filesrv_ny und mir alle if fragen sparen indem ich eine doppelvariable (wortneuschöpfung ?!?) einsetze. beispiel: standort = objItem.DcSiteName hp1="\\&&standort\HP1" ^^ logisch wsh bezeichnet. dh. in der var standort steht stuttgart drin die ich gleichzeitig als variable auflösen will (also in filesrv_str) geht sowas ? vielen dank für die antworten grüße stephan edit: es sind im moment 9 standorte tendenz steigend Zitieren Link zu diesem Kommentar
marka 584 Geschrieben 13. Juli 2007 Melden Teilen Geschrieben 13. Juli 2007 OK dann so: Select Case STR_Standort Case "Stuttgart" STR_FileSVR = STR_Filesrv_str Case "Atlanta" STR_FileSVR = STR_Filesrv_atl Case "NewYork" STR_FileSVR = STR_Filesrv_ny Case Else End Select Geht zumindest in die Richtung... Zitieren Link zu diesem Kommentar
maverick82 10 Geschrieben 13. Juli 2007 Melden Teilen Geschrieben 13. Juli 2007 Kurze Zwischenfrage: Warum macht ihr nicht pro Standort ein Login-Skript? Die Standort könnte ihr im AD über die Subnetze abbilden und dann die Login-Skripte mit den Standorten verknüpfen. Wenn ein Mitarbeiter am anderen Standort arbeitet bekommt er dort eine IP-Adresse zugewiesen und über diese wird dann das passende Login-Skript aufgerufen. Außerdem könntet ihr, wenn gewünscht, den Standort-Admins das Recht geben ihr Login-Skript anzupassen. Zitieren Link zu diesem Kommentar
steppe 10 Geschrieben 13. Juli 2007 Autor Melden Teilen Geschrieben 13. Juli 2007 Na das ist ja noch einfacher :) Ich wusste nicht dass man auf die Standortcontainer auch Gruppenrichtlinien setzen kann. Dann ists ja einfach. Danke. Wünsch euch ein schönes Wochenende Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 13. Juli 2007 Melden Teilen Geschrieben 13. Juli 2007 Hi, Es hängt von deinem Unternehmen ab, ob du die Verwaltung des Loginskript delegieren möchtest. Ich würds nicht machen! Lass das Skript herausfinden, an welchem Standort der User gerade ist (z.B. mit adsysteminfo) und entsprechend daraus die zum Standort gehörige INI-Datei einlesen, in der Laufwerksmappings, Drucker, Registrykeys etc. hinterlegt sind. Diese Ini-Datei darf dann auch ein Siteadmin editieren. Aber Ahnung in VBS brauchst du cu blub Zitieren Link zu diesem Kommentar
Frederik 10 Geschrieben 18. Juli 2007 Melden Teilen Geschrieben 18. Juli 2007 Hallo zusammen, Du musst im vorwege abklären, in welcher Demension Ihr die AD einbinden wollt. Hat jeder Standort einen eigenen Domänen-Controller oder läuft das ganze über eine Standleitung bei euch auf und es gibt nur diesen einen DC in der Verwaltung? Wenn dies der fall ist, kannst du es mit einer If Schleife pro Standort Lösen. Hierfür benötigst du noch ein kleines Tool von MS. Das Tool heißt IFMEMBER.EXE. Damit kannst du wärend des Logins Prüfen, in welchem OU sich der User oder der Computer befindet. Also falls es keine Standortreplizierung gibt, kannst dann in der AD OUs mit dem Namen der Standorte erstellen. Dort werden die Computer und User rein gelegt. Im Script könntest du es nun wie folgt umsetzten. rem###Loginscript start### IFMEMBER "Standort1" IF not Errorlevel 1 goto pruefungstand2 net use H: \\Fileserver4Standort1\Freigabe goto ende :pruefungstand2 IFMEMBER "Standort2" IF not Errorlevel 1 goto pruefungstand3 net use H: \\Fileserver4Standort2\Freigabe goto ende :pruefungstand3 IFMEMBER "Standort3" IF not Errorlevel 1 goto pruefunghaupt net use H: \\Fileserver4Standort3\Freigabe goto ende :pruefunghaupt IFMEMBER "Hautpverwaltung" IF not Errorlevel 1 goto ende net use H: \\Fileserver4Verwaltung\Freigabe :ende rem###Loginscript Ende### Ich hoffe, ich konnte dir weiter helfen. Gruß Frederik Zitieren Link zu diesem Kommentar
steppe 10 Geschrieben 18. Juli 2007 Autor Melden Teilen Geschrieben 18. Juli 2007 Hallo Frederik, an jedem der Standorte befindet sich 1 oder 2 DC. Also wird wohl die Lösung mit der Zuweisung auf die Standorte in Frage kommen. Nun bleibt bei mir noch die Frage in welcher Reihenfolge die Gruppenrichtlinien abgearbeitet werden? Standort Gruppen-OU oder andersrum. Ich werd aus dem O'Reilly Active Directory Buch in diesem Fall nicht so ganz schlau (obwohl ich eigentlich mit meinem englisch zufrieden bin) danke und grüße Zitieren Link zu diesem Kommentar
ducke 11 Geschrieben 18. Juli 2007 Melden Teilen Geschrieben 18. Juli 2007 Gruppenrichtlinien werden immer von oben nach unten abgearbeitet. Siehe dazu Brainstorms, Hinweise, Tipps und Tricks, allgemeine Wissenswertes Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.