VBS Login Script verweigert seinen Dienst
Hallo!
Ich habe dieses Script sozusagen geerbt und eigentlich immer nur Probleme damit. Laufwerke werden gar nicht verbunden und Drucker nur wenn die Sterne richtig stehen.
Da ich ein VB Neuling bin kann ich das Script zwar entziffern, aber für Fehlersuche reicht mein Wissen leider noch nicht.
Daher meine Bitte an euch, könnt Ihr mal drüber schauen und mir eventuell weiterhelfen?
Ich habe das Script um ca. 40 Drucker reduziert, damit das lesen einfacher fällt!
___________________________________________________________________________________________________________
Initialize
GetUserName
on error resume next
wscript.echo "Hallo " & loginUser
'Hier könnten allgemeine Laufwerks und Druckerverbindungen stehen....
'Nächste Funktion liest die Gruppen aus
sucheGruppen
'########################### Globale Variablen
Dim WSHNetwork
Dim loginUser
'########################### Funktionen
Sub Gruppen(aktuelleGruppe)
Select Case aktuelleGruppe
Case "LAUFWERKE_CNC"
wscript.echo "Laufwerk CNC wird verbunden"
MapDrive "N:","\\teamfile\cnc"
Case "LAUFWERKE_FINANZEN"
wscript.echo "Laufwerke BMD und Soft2000 werden verbunden"
MapDrive "R:","\\teamstore\bmd"
MapDrive "S:","\\teamfile\Fibu"
Case "LAUFWERKE_HPO"
wscript.echo "Laufwerke HPO und Schelling werden verbunden"
MapDrive "I:","\\teamfile\hpo"
MapDrive "J:","\\teamfile\schlling"
Case "LAUFWERK_P2"
wscript.echo "Laufwerk P2 wird verbunden"
MapDrive "Q:","\\teamvm02\P2"
Case "Laufwerk_QUI_Teilnehmer"
wscript.echo "Laufwerk QUI Teilnehmer wird verbunden"
MapDrive "Z:","\\teamfile\QUI_Schulung"
Case "Laufwerk_Adpontes"
wscript.echo "Laufwerk Adpontes wird verbunden"
MapDrive "P:","\\teamwsv01\p2-adpontes"
Case "DRUCKER_Anmeldung"
wscript.echo "Anmeldung Drucker werden verbunden"
WSHNetwork.AddWindowsPrinterConnection "\\teamstore\Linz_Anmeldung_HPLJ1200"
Case "DRUCKER_BRAUNAU"
wscript.echo "Braunau Drucker werden verbunden"
WSHNetwork.AddWindowsPrinterConnection "\\Teamstore\Braunau_Sekretariat_HPLJ1100"
WSHNetwork.AddWindowsPrinterConnection "\\Teamstore\Braunau_StandortLtg_HPDJ1125C"
WSHNetwork.AddWindowsPrinterConnection "\\Teamstore\Braunau_AV_HPLJ1100"
End Select
End sub
Sub sucheGruppen()
On Error Resume Next
adsPath = "WinNT://TEAM-WORK/" & loginUser
Set objSAM = GetObject("WinNT:")
Set objUser = objSAM.OpenDSObject(adsPath,"","", ADS_READONLY_SERVER)
For Each Prop In objUser.groups
call Gruppen(ucase(Prop.Name))
Next
End Sub
Sub MapDrive(strDrive,strShare)
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Netzlaufwerk verbinden, schon bestehende Verbindung überschreiben
On Error Resume Next
WSHNetwork.MapNetworkDrive strDrive, strShare
If Err.Number Then
''''wscript.echo Err.Description
WSHNetwork.RemoveNetworkDrive strDrive
WSHNetwork.MapNetworkDrive strDrive, strShare
End If
End Sub
Sub GetUserName ()
loginUser = ""
While loginUser = ""
loginUser = WSHNetwork.UserName
Wend
End Sub
Sub Initialize ()
Set WSHNetwork = WScript.CreateObject("WScript.Network")
End Sub
___________________________________________________________________________________________________________
Vielen Dank für eure Mühe schon mal vorab!
Liebe Grüsse
Kidjo
Ich habe dieses Script sozusagen geerbt und eigentlich immer nur Probleme damit. Laufwerke werden gar nicht verbunden und Drucker nur wenn die Sterne richtig stehen.
Da ich ein VB Neuling bin kann ich das Script zwar entziffern, aber für Fehlersuche reicht mein Wissen leider noch nicht.
Daher meine Bitte an euch, könnt Ihr mal drüber schauen und mir eventuell weiterhelfen?
Ich habe das Script um ca. 40 Drucker reduziert, damit das lesen einfacher fällt!
___________________________________________________________________________________________________________
Initialize
GetUserName
on error resume next
wscript.echo "Hallo " & loginUser
'Hier könnten allgemeine Laufwerks und Druckerverbindungen stehen....
'Nächste Funktion liest die Gruppen aus
sucheGruppen
'########################### Globale Variablen
Dim WSHNetwork
Dim loginUser
'########################### Funktionen
Sub Gruppen(aktuelleGruppe)
Select Case aktuelleGruppe
Case "LAUFWERKE_CNC"
wscript.echo "Laufwerk CNC wird verbunden"
MapDrive "N:","\\teamfile\cnc"
Case "LAUFWERKE_FINANZEN"
wscript.echo "Laufwerke BMD und Soft2000 werden verbunden"
MapDrive "R:","\\teamstore\bmd"
MapDrive "S:","\\teamfile\Fibu"
Case "LAUFWERKE_HPO"
wscript.echo "Laufwerke HPO und Schelling werden verbunden"
MapDrive "I:","\\teamfile\hpo"
MapDrive "J:","\\teamfile\schlling"
Case "LAUFWERK_P2"
wscript.echo "Laufwerk P2 wird verbunden"
MapDrive "Q:","\\teamvm02\P2"
Case "Laufwerk_QUI_Teilnehmer"
wscript.echo "Laufwerk QUI Teilnehmer wird verbunden"
MapDrive "Z:","\\teamfile\QUI_Schulung"
Case "Laufwerk_Adpontes"
wscript.echo "Laufwerk Adpontes wird verbunden"
MapDrive "P:","\\teamwsv01\p2-adpontes"
Case "DRUCKER_Anmeldung"
wscript.echo "Anmeldung Drucker werden verbunden"
WSHNetwork.AddWindowsPrinterConnection "\\teamstore\Linz_Anmeldung_HPLJ1200"
Case "DRUCKER_BRAUNAU"
wscript.echo "Braunau Drucker werden verbunden"
WSHNetwork.AddWindowsPrinterConnection "\\Teamstore\Braunau_Sekretariat_HPLJ1100"
WSHNetwork.AddWindowsPrinterConnection "\\Teamstore\Braunau_StandortLtg_HPDJ1125C"
WSHNetwork.AddWindowsPrinterConnection "\\Teamstore\Braunau_AV_HPLJ1100"
End Select
End sub
Sub sucheGruppen()
On Error Resume Next
adsPath = "WinNT://TEAM-WORK/" & loginUser
Set objSAM = GetObject("WinNT:")
Set objUser = objSAM.OpenDSObject(adsPath,"","", ADS_READONLY_SERVER)
For Each Prop In objUser.groups
call Gruppen(ucase(Prop.Name))
Next
End Sub
Sub MapDrive(strDrive,strShare)
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Netzlaufwerk verbinden, schon bestehende Verbindung überschreiben
On Error Resume Next
WSHNetwork.MapNetworkDrive strDrive, strShare
If Err.Number Then
''''wscript.echo Err.Description
WSHNetwork.RemoveNetworkDrive strDrive
WSHNetwork.MapNetworkDrive strDrive, strShare
End If
End Sub
Sub GetUserName ()
loginUser = ""
While loginUser = ""
loginUser = WSHNetwork.UserName
Wend
End Sub
Sub Initialize ()
Set WSHNetwork = WScript.CreateObject("WScript.Network")
End Sub
___________________________________________________________________________________________________________
Vielen Dank für eure Mühe schon mal vorab!
Liebe Grüsse
Kidjo
Please also mark the comments that contributed to the solution of the article
Content-Key: 30320
Url: https://administrator.de/contentid/30320
Printed on: April 26, 2024 at 15:04 o'clock
1 Comment
Moin, Kidjo,
mach Dir mal keine Sorgen, dass Du VB-Neuling bist - wer immer dieses Skript geschrieben hat, ist auch nicht weiter *gg
Der Bug ist relativ banal (passiert ja auch nicht viel trotz dieses aufgeblähten Codes).
Der Schnipsel startet
..
Initialize....GetUser...
sucheGruppen ---> Ruft "call Gruppen(ucase(Prop.Name))" <----------------
...das heißt, die Subroutine "Gruppen()" bekommt als Parameter ("EINE GRUPPE ABER IMMER IN GROSS *LACH*")
Und wenn Du dann in diese *lach* CASE-Konstrukte reinschaust, mit was da "GROSSE GRUPPE" verglichen wird... siehst Du es?
...tja ...dieser Vergleich wird sehr selten funktioneren.
Also, wenn Du dieses bisheriges Skriptlett möglichst wenig anfassen/anpassen willst, dann schreibe in der Sub Gruppen() alle Strings nach dem CASE "IN GROSSBUCHSTABEN"
Gruß Biber
mach Dir mal keine Sorgen, dass Du VB-Neuling bist - wer immer dieses Skript geschrieben hat, ist auch nicht weiter *gg
Der Bug ist relativ banal (passiert ja auch nicht viel trotz dieses aufgeblähten Codes).
Der Schnipsel startet
..
Initialize....GetUser...
sucheGruppen ---> Ruft "call Gruppen(ucase(Prop.Name))" <----------------
...das heißt, die Subroutine "Gruppen()" bekommt als Parameter ("EINE GRUPPE ABER IMMER IN GROSS *LACH*")
Und wenn Du dann in diese *lach* CASE-Konstrukte reinschaust, mit was da "GROSSE GRUPPE" verglichen wird... siehst Du es?
..
Select Case "LAUFWERK_ADPONTES"
...
CASE "Laufwerk_Adpontes"
Also, wenn Du dieses bisheriges Skriptlett möglichst wenig anfassen/anpassen willst, dann schreibe in der Sub Gruppen() alle Strings nach dem CASE "IN GROSSBUCHSTABEN"
Gruß Biber