Jump to content
Sign in to follow this  
steppe

Logon Script mit standortspezifischen Mappings

Recommended Posts

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

Share this post


Link to post
Share on other sites

[...]

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!!!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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...

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...