Jump to content

logon script mit vbs


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Zusammen

 

Ich habe wirklich keine ahnung von logon scripts, geschweige denn von vbs, muss aber rahmen einer arbeit ein logon script realisieren...und das möglichst schnell. gemäss zeitplan müsste ich heute abend fertig sein :rolleyes:

 

Der Code des Scripts:

 

---------------

Const INFORMATIK_GROUP = "cn=fa-informatik"

Const FINANCE_GROUP = "cn=fa-finance"

Const HUMAN_GROUP = "cn=fa-human"

Const ADMINISTRATION_GROUP = "cn=FA-Administration"

 

'fährt bei fehlern mit dem nächsten befehl weiter

on error resume next

 

Set wshNetwork = CreateObject("WScript.Network")

'entfernt vorhandene Netzlaufwerke

wshnetwork.removenetworkdrive "h:"

wshnetwork.removenetworkdrive "z:"

wshnetwork.removenetworkdrive "o:"

wshnetwork.removenetworkdrive "p:"

 

'Fügt das Persönliche Laufwerk hinzu

wshNetwork.MapNetworkDrive "h:", "\\Sdcfaas\" & wshNetwork.UserName

'Fügt das Applikationslaufwerk hinzu

wshNetwork.MapNetworkDrive "z:", "\\Sdcfaas\Application"

 

Set ADSysInfo = CreateObject("ADSystemInfo")

Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)

strGroups = LCase(Join(CurrentUser.MemberOf))

 

If InStr(strGroups, INFORMATIK_GROUP) Then

 

wshNetwork.MapNetworkDrive "o:", "\\Sdcfaas\FAInformatik\"

wshNetwork.AddWindowsPrinterConnection "\\Sdcfaas\FA_1300N_SCHMIDA"

wshNetWork.SetDefaultPrinter "\\Sdcfaas\FA_1300N_SCHMIDA"

 

ElseIf InStr(strGroups, FINANCE_GROUP) Then

 

wshNetwork.MapNetworkDrive "o:", "\\Sdcfaas\FAFinance\"

wshNetwork.AddWindowsPrinterConnection "\\Sdcfaas\FA_1300N_SCHMIDA"

wshNetWork.SetDefaultPrinter "\\sdcfaas\FA_1300N_SCHMIDA"

 

ElseIf InStr(strGroups, HUMAN_GROUP) Then

 

wshNetwork.MapNetworkDrive "o:", "\\Sdcfaas\FAHuman\"

wshNetwork.AddWindowsPrinterConnection "\\Sdcfaas\FA_1300N_SCHMIDA"

wshNetWork.SetDefaultPrinter "\\Sdcfaas\FA_1300N_SCHMIDA"

 

End If

----------------

 

habe 2 probleme :

1. das Persönliche laufwerk ist ein $ share... wie kann ich den mit wshNetwork.UserName hinzufügen ????

 

2. die gruppensache mit LCase(Join(CurrentUser.MemberOf)) scheint irgendwie nicht zu funktionieren.

Ehrlichgesagt bin ich mir schon bei den Const nicht sicher ob dies stimmt.

Die Gruppen befinden sich in einer OU "Groups" die sich wiederum in einer OU "Facharbeit" befindet und heissen:

FA-Administration

FA-Finance

FA-Human

FA-Informatik

 

weiss jemand der rätsel lösung ?

 

...eine etwas Ratlose :confused:

Link zu diesem Kommentar

ich habe mich damit auch mal rumgeschlagen ...

 

auf der ms seite gabs dazu mal was, aber war nicht wirklich hilfreich :

 

http://www.microsoft.com/resources/documentation/windows/2000/server/scriptguide/en-us/default.mspx

 

 

http://www.microsoft.com/technet/scriptcenter/default.mspx

 

 

http://labmice.techtarget.com/scripting/VB.htm

 

vielleicht hilfts

Link zu diesem Kommentar

Ja hi.

Hab mir dein Script mal angesehen.

Der Fehler liegt bei InStr(strGroups, INFORMATIK_GROUP),instr(strGroups, FINANCE_GROUP) und bei InStr(strGroups, HUMAN_GROUP)

Schalte mal das 'on error resume next' aus, dann siehst du in welcher Zeile der Fehler auftritt.

Du musst jeweils noch ein > 0 anhängen, da du in der IF-Anweisung eine Abfrage auf das Ergebnis stellst, welches instr zurückliefert. Dieses stellt nähmlich die Position in dem String als Integer dar.

 

Position = instr(String1,String2)

 

if instr(strgroups,informatik_group) > 0 then

Wscript.echo "Ja es ist dabei"

else

Wscript.echo "Ne ne. Is nicht dabei"

end if

Link zu diesem Kommentar

...es funktioniert doch noch nicht ganz, aber ich vermute das hängt nur indirekt mit dem script zusammen :

ich habe einen domain admin user AS, mit diesem funktioniert alles perfekt.

wenn ich jedoch mit einem normalen user einlogge erhält er die allgemeinen laufwerke, jedoch nicht das, dass je nach gruppenzugehörigkeit zugewiesen wird...

 

während meiner ersten veruche mit den gruppenzugehörigkeiten mit einer box die mir die gruppen anzeigte, hatte ich festgestellt, dass beim admin user die gruppen angezeigt werden, wenn das LCase(Join(CurrentUser.MemberOf)) steht... mit den normalen usern hat es nur etwas angezeigt, wenn ich das Join herausgenommen habe...

 

:confused::confused::confused:

Link zu diesem Kommentar

Hab das jetzt nochmal getestet.

 

Also bis jetzt ist mir dazu noch keine Lösung eingefallen.

Es ist wohl offensichtlich so, dass bestimmte befehle nicht so interpretiert werden, wenn man keine Adminrechte hat.

 

Das Problem liegt auf jedenfall darin, dass currentuser.memberof ein Object mit den verschiedenen einträgen in der AD im bezug auf die Gruppenzugehörigkeit darstellt

QUASI ein ARRAY mit bestimmten werten

GUPPE[1]= "dc=server ....

GUPPE[2]= "dc=server ....

usw.

 

Als Admin kann man nun dieses Object auswerten, als Normalsterblicher eben nicht.

 

Ich hab bis aber noch keine Ahnung wie man dies Umgehen kann. Der Fehler liegt also nicht am join sonder ander Fehlenden Berechtigung Objecte dieser Ar verwerten zu können.

 

strGroups = LCase(Join(CurrentUser.MemberOf," "))

 

Diese Zeile kann man alternativ auch noch so darstellen:

 

for each element in CurrentUser.MemberOf

strgroups = strgroups & element & ";"

next

Wscript.Echo strgroups

 

jedoch selbst hier ist es nicht möglich als User darauf zuzugreifen, aber ich versuchs noch ein bisschen

Link zu diesem Kommentar

Hi

 

versuche es mit diesem Script. msgbox dann durch deine Befehle ersetzen.

 

Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
Dim strDomain   : strDomain   = WshNetwork.UserDomain
Dim strUser     : strUser     = WshNetwork.UserName


If IsMember("Administratoren") Then
msgbox "Administratoren"
End If

If IsMember("Domänen-Gäste") Then
msgbox "Domänen-Gäste"
End If

If IsMember("Organisations-Admins") Then
msgbox "Organisations-Admins"
End If

If IsMember("Richtlinien-Ersteller-Besitzer") Then
msgbox "Richtlinien-Ersteller-Besitzer"
End If

If IsMember("Schema-Admins") Then
msgbox "Schema-Admins"
End If

If IsMember("Domänen-Admins") Then
msgbox "Domänen-Admins"
End If

Function IsMember(strGroup)
   Dim objMember, objGroup
   On Error Resume Next
   Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")
   If Err.Number = 0 Then
      IsMember = objGroup.IsMember("WinNT://" & strDomain & "/" & strUser)
   End If
   On Error Goto 0
End Function

 

thorgood

Link zu diesem Kommentar

danke ! das tut auch mit dem normalsterblichen user :D

 

hat mir vielleicht noch jemand einen tipp bezüglich einer box, die mir alle angehängten laufwerke anzeigt ?

ich habe eine variante die mir fast unzählige message boxes anzeigt (für jedes laufwerk ne neue)

 

WScript.Echo "Domäne = " & WshNetwork.UserDomain _

&vbCr & "Computername = " & WshNetwork.ComputerName _

&vbCr & "Benutzername = " & WshNetwork.UserName _

&vbCr & "Zuordnungen der Netzlaufwerke:"

 

For i = 0 to oDrives.Count - 1 Step 2

WScript.Echo "Laufwerk " & oDrives.Item(i) & " = " & oDrives.Item(i+1)

next

 

krieg ich das alles irgendwie in eine box gepackt ?

Link zu diesem Kommentar

Also so ungefähr, falls du das meinst.

 

WScript.Echo "Domäne = " & WshNetwork.UserDomain _

&vbCr & "Computername = " & WshNetwork.ComputerName _

&vbCr & "Benutzername = " & WshNetwork.UserName _

&vbCr & "Zuordnungen der Netzlaufwerke:"

 

For i = 0 to oDrives.Count - 1 Step 2

LAUFWERKE = LAUFWERKE & oDrives.Item(i) & " = " & oDrives.Item(i+1) & vbcrlf

next

WScript.Echo LAUFWERKE

Link zu diesem Kommentar

Das aktuelle Skript :

 

Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
Dim strDomain   : strDomain   = WshNetwork.UserDomain
Dim strUser     : strUser     = WshNetwork.UserName

Set oDrives = WshNetwork.EnumNetworkDrives
Set oPrinters = WshNetwork.EnumPrinterConnections

'fährt bei fehlern mit dem nächsten befehl weiter
on error resume next

'entfernt vorhandene Netzlaufwerke
wshnetwork.removenetworkdrive "h:"
wshnetwork.removenetworkdrive "z:"
wshnetwork.removenetworkdrive "o:"
wshnetwork.removenetworkdrive "p:"

'Fügt das Persönliche Laufwerk hinzu
wshNetwork.MapNetworkDrive "h:", "\\Sdcfaas\" & wshNetwork.UserName & "$"
'Fügt das Applikationslaufwerk hinzu
wshNetwork.MapNetworkDrive "z:", "\\Sdcfaas\Application"
'Fügt das Firmenlaufwerk hinzu
wshNetwork.MapNetworkDrive "p:", "\\Sdcfaas\FA"

'Fügt den Printer hinzu und Setzt ihn als Standard
wshNetwork.AddWindowsPrinterConnection "\\Sdcfaas\FA_1300N_SCHMIDA"
wshNetWork.SetDefaultPrinter "\\Sdcfaas\FA_1300N_SCHMIDA"

If IsMember("fa-administration") Then
wshNetwork.MapNetworkDrive "o:", "\\Sdcfaas\FAAdministration"
End If

If IsMember("fa-informatik") Then
wshNetwork.MapNetworkDrive "o:", "\\Sdcfaas\FAInformatik"
End If

If IsMember("fa-human") Then
wshNetwork.MapNetworkDrive "o:", "\\Sdcfaas\FAHuman"
End If

If IsMember("fa-finance") Then
wshNetwork.MapNetworkDrive "o:", "\\Sdcfaas\FAFinance"
End If

Function IsMember(strGroup)
   Dim objMember, objGroup
   On Error Resume Next
   Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")
   If Err.Number = 0 Then
      IsMember = objGroup.IsMember("WinNT://" & strDomain & "/" & strUser)
   End If
   On Error Goto 0
End Function

For i = 0 to oDrives.Count - 1 Step 2
LAUFWERKE = LAUFWERKE & oDrives.Item(i) & " = " & oDrives.Item(i+1) & vbcrlf
next
For i = 0 to oPrinters.Count - 1 Step 2
PRINTER = PRINTER & oPrinters.Item(i) & " = " & oPrinters.Item(i+1) & vbcrlf
next

WScript.Echo 	"Herzlich Willkommen im Testnetzwerk !"_
	&vbCr & "      "_
	&vbCr &"Domäne = " & WshNetwork.UserDomain _
	&vbCr & "Computername = " & WshNetwork.ComputerName _
	&vbCr & "Benutzername = " & WshNetwork.UserName _
	&vbCr & "      "_
	&vbCr & "Zuordnungen der Netzlaufwerke:"_
	&vbCr & LAUFWERKE _
	&vbCr & "      "_
	&vbCr & "Zuordnung der Netzwerkdrucker"_
	&vbCr & PRINTER

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...