braunse
Goto Top

VBS Variablen überprüfen, Netzlaufwerk anzeigen

So folgende Fragen hab ich zu diesem Code:
Wie realisiere ich es, das nach der Anmeldung das Netzlaufwerk automatisch geöffnet wird und wie realisere ich es, dass strUser und strPasswort auf richtigkeit abgeprüft werden? Hier hab ich schon mit Eingab = versucht klappt aber nicht ganz!
Danke schonmal


 
function safeHTML($str) { 
$approvedtags = array( 
 "p"=>2,   // 2 means accept all qualifiers: <foo bar>   
"b"=>1   // 1 means accept the tag only: <foo>   
); 

On Error Resume Next										
call GetUserName("", strUserName, strPassword) 							  
Set net = CreateObject("WScript.Network") 							  
If fs.driveExists("W:\") Then net.MapNetworkDrive "J:",True,True   
net.MapNetworkDrive "W:", "\\191.32.....4\g$", false, "AO....TE\"& strUserName, strPassword    



If Eingabe = strUserName And strPassword = Eingabe Then							
MsgBox "Sie haben sich erfolgreich mit der Aus.....elt verbunden!"  
else 
MsgBox "Bitte geben Sie Benutzername und Passwort ein!"  
End If												


Function GetUserName( myPrompt, strUsername, strPassword) 					

    Dim objIE											
    Set objIE = CreateObject( "InternetExplorer.Application" )					  
    objIE.Navigate "about:blank"  
    objIE.Document.Writeln "<body bgcolor=#0099FF>"  
    objIE.Document.Title = "Passworteingabe xxx08"      
    objIE.ToolBar        = False
    objIE.Resizable      = False
    objIE.StatusBar      = False
    objIE.Width          = 400
    objIE.Height         = 285
   
   
    With objIE.Document.ParentWindow.Screen
        objIE.Left = (.AvailWidth  - objIE.Width ) \ 2
        objIE.Top  = (.Availheight - objIE.Height) \ 2
    End With
    Do While objIE.Busy
        WScript.Sleep 200
    Loop
     objIE.Document.Body.InnerHTML ="<DIV align=""center""4><P>" & myPrompt _			  
                                  & "</P>" & vbCrLf _                               		    
				  & "<h1 style=color:#0000FF;font-size:125%>Benutzername</h1>" _  
				  & "<INPUT TYPE=""Name"" SIZE=""25"" " _  
                                  & "ID=""Name"">" & vbCrLf _  
				  & "<DIV align=""center"" ><P>" & myPrompt _  
                                  & "</P>" & vbCrLf _  
				  & "<h1 style=color:#0000FF;font-size:125%>Passwort</h1>" _  
				  & "<P><INPUT TYPE=""Password"" SIZE=""25"" " _  
				  & "ID=""Password""></P>" & vbCrLf _  
                                  & "<P><INPUT TYPE=""hidden"" ID=""OK"" " _  
                                  & "Password=""OK"" VALUE=""0"">" _  
                                  & "<INPUT TYPE=""submit"" VALUE="" OK "" " _  
                                  & "OnClick=""VBScript:OK.Value=1"">" _  
				  & "<h1 style=font-size:60%; align=left>© Sxxx8</h1></DIV>"  
    
    objIE.Visible = True
    Do While objIE.Document.All.OK.Value = 0
        WScript.Sleep 200
    Loop
    strUserName = objIE.Document.All.Name.Value							
    strPassword = objIE.Document.All.Password.Value						
    objIE.Quit
    Set objIE = Nothing
    objIE.Document.Writeln "</body>"  
    
End Function											
} 

Content-Key: 100419

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

Printed on: April 26, 2024 at 14:04 o'clock

Member: Logan000
Logan000 Oct 28, 2008, updated at Oct 18, 2012 at 16:36:27 (UTC)
Goto Top
Moin Moin

Zitat von @braunse:
So folgende Fragen hab ich zu diesem Code:
Wie realisiere ich es, das nach der Anmeldung das Netzlaufwerk
automatisch geöffnet wird ...
Siehe Via VBS Laufwerk verbinden inkl Passwort und Benutzer eingabe

... und wie realisere ich es, dass strUser
und strPasswort auf richtigkeit abgeprüft werden? Hier hab ich
schon mit Eingab = versucht klappt aber nicht ganz!
Das mit dem Prüfen ist mir nicht soganz klar.
Denn MapNetworkDrive ist doch eine Prüfung.
Benutzername und Passwort sind richtig, sonst wird das Laufwerk nicht verbunden.
Und ausserdem wenn du Benutzername und Kennwort schon kennst (um es abzuprüfen) warum gibst du es bei MapNetworkDrive nicht gleich mit an?

Gruß L.
Member: braunse
braunse Oct 28, 2008 at 11:25:34 (UTC)
Goto Top
Also das ist so gemeint, dass wenn ich z.b nur Username oder nur passwirt eingebe, dass dann eine meldung kommt. also möchte ich praktisch überprüfen, ob beides eingebeben wurde und zwar richtig, und dann kommt eine meldung! erfolgreich verbunden.
Member: braunse
braunse Oct 28, 2008 at 11:34:56 (UTC)
Goto Top
Hab das mit dem Netzlaufwerk öffnen schon eingebunden! Funktioniert auch aber kann man das auch so machen das ein eigenes Fenster aufgeht und nicht das NW im Explorer?
Member: Logan000
Logan000 Oct 28, 2008 at 12:17:37 (UTC)
Goto Top
Moin
Zitat von @braunse:
Also das ist so gemeint, dass wenn ich z.b nur Username oder nur
passwirt eingebe, dass dann eine meldung kommt.
Du kannst z.B. prüfen ob überhaupt was eingegeben wurde:
...
call GetUserName("", strUserName, strPassword)   
if strUsername="" or Password="" Then  
    msgbox "Bitte geben Sie Benutzername UND Kennwort an."  
end if
...
Oder das ganze in einer Schleife laufen lassen bis beides eigegeben wurde:
...
While strUserName="" or strPassword=""  
  call GetUserName("", strUserName, strPassword)   
wend
...
... also möchte ich praktisch überprüfen,
ob beides eingebeben wurde und zwar richtig, ...
Das mit dem Richtig ist das Problem. Woher kennst du das Kennwort?
Bzw. wenn Du es kennst warum läst du den Anwender es erst eingeben?
und dann kommt eine meldung! erfolgreich verbunden.
ob die verbindung erfolgreich war kannst genauso prüfen wie vorher:
...
If fs.driveExists("W:\") Then  
   msgbox "Netzlaufwerk erfolgreich verbunden."  
end if
...

Gruß L.
Member: braunse
braunse Oct 28, 2008 at 12:24:28 (UTC)
Goto Top
Noch was, wie kann ich in den Quellcode einbauen, dass wenn Laufwerksbuchstabe w schon verwendet wird, dass dann der nächste freie genutzt wird?
Member: Logan000
Logan000 Oct 28, 2008 at 12:32:03 (UTC)
Goto Top
Moin

Zitat von @braunse:
Noch was, wie kann ich in den Quellcode einbauen, dass wenn
Laufwerksbuchstabe w schon verwendet wird, dass dann der nächste
freie genutzt wird?
??? Ich bin verwirt.
Du hast den Code um zu prüfen ob ein NetzLW existiert.
Und das Alphabet kennst Du. Was fehlt dir noch?

Gruß L.
Member: braunse
braunse Oct 28, 2008 at 12:37:52 (UTC)
Goto Top
hmm ja stimmt! trotzdem danke für den hinweis ;)
und wie mach icn das, das das nw in einem eigenen fenster geöffnet wird und nicht im explorer? heist, das der inhalt gleich gezeigt wird wie in einem neuen ordner?
Member: braunse
braunse Oct 28, 2008 at 13:08:45 (UTC)
Goto Top
 
function safeHTML($str) { 
$approvedtags = array( 
"p"=>2,   // 2 means accept all qualifiers: <foo bar>   
"b"=>1   // 1 means accept the tag only: <foo>   
 ); 
On Error Resume Next										
call GetUserName("", strUserName, strPassword) 							  
If fs.drivenotExists("W:\") Then 								  
net.MapNetworkDrive "W:", "\\191.3xxx4\g$", false, "AOxxxTE\"& strUserName, strPassword  
else 
net.MapNetworkDrive "J:", "\\191.3xxx\g$", false, "AOxxxxE\"& strUserName, strPassword  
end if   

If NetworkDriveExists("W:\") Then  
msgbox "erfolgreich"  
else 
msgbox "nochmal"  
end if

'set shell = CreateObject("WScript.Shell")   
'shell.run "%windir%\explorer /e, W:"  
					} 


Also hab den Code jetzt so umgebaut! funktioniert soweit erstmal! das einzige was jetzt noch gut wäre, wäre die sache mit dem öffnen im neuen fenster! nicht explorer...
Member: Logan000
Logan000 Oct 28, 2008 at 14:17:09 (UTC)
Goto Top
Moin Moin
Zitat von @braunse:
Also hab den Code jetzt so umgebaut! funktioniert soweit erstmal! das
einzige was jetzt noch gut wäre, wäre die sache mit dem
öffnen im neuen fenster! nicht explorer...

Was fürn Fenster denn sonst. Ist alles explorer.
Falls die Baumansicht stört, lass einfach den Parameter /e weg:
...
 set shell = CreateObject("WScript.Shell")   
 shell.run "%windir%\explorer  W:"   
...

Gruß L.
Member: braunse
braunse Oct 28, 2008 at 14:58:10 (UTC)
Goto Top
Na wunderbar! genauso sollte es sein!
Ich danke recht herzlich
Member: braunse
braunse Oct 30, 2008 at 07:32:50 (UTC)
Goto Top
Hab noch eine Frage, und zwar kann ich mich mit set fs. net .... nicht also normaler user anmelden. also das nw kann nicht gemappt werden! ich müsste also net use verwenden!
wie sieht denn da die syntax für meinen quellcode aus?
Member: Logan000
Logan000 Oct 30, 2008 at 07:54:14 (UTC)
Goto Top
Moin Moin

MapNetworkDrive funktioniert auch als "normaler" Benutzer.
Es mach generell keinen unterschied ob Du ein Netzlaufwerk manuell (in explorer Extras / Netzlaufwerk verbinden), mit "MapNetworkDrive" oder per "Net Use" verbindest.

Wenn das netzlaufwer nicht verbunden wird, überprüfe ob du das Laufwerk "zu Fuß" verbinden kannst. Solte dies auch nicht funktionieren, überpürüfe die Berechtigungen der Freigabe.

Gruß L.
Member: braunse
braunse Oct 30, 2008 at 08:41:57 (UTC)
Goto Top
also ich habe schon via net use in der cmd mich mit einem benutzer verbunden, der mit dem vbs script und mapnetworddrive nicht ging. das script geht nur wenn die user domänenadmins sind! nach den berechtigungen hab ich auch schon geschaut!
deshalb wollt ich halt auf net use zurückgreifen weils damit ja gehen sollte!
jetzt müsst ich nur noch wissen wie ich das in das vbs einbaue??
Member: Logan000
Logan000 Oct 30, 2008 at 09:06:40 (UTC)
Goto Top
Moin

Zitat von @braunse:
das script geht nur wenn die user domänenadmins sind!
Wenn Dein Skript nur als Dom.Admin läuft liegt es an etwas anderem.
Für "MapNetworkDrive" sind definitiv keine Administratoren Rechte nötig.

Wenn das Skript nicht "läuft", nimm das "On error resume next" raus und probier es nochmal. Dann solte eine Fehlermeldung kommen, oder das Netzlaufwerk verbunden werden.

Was das ausfürhern von Batch befehnen angent machst du es genau wie mit der Explorer.exe via Run.
z.B.
... 
 set shell = CreateObject("WScript.Shell")    
 shell.run "net use  W: \\191.32.....4\g$", false, "AO....TE\"    
...

Gruß L.
Member: braunse
braunse Oct 30, 2008 at 09:24:15 (UTC)
Goto Top
Habs on error resum rausgemacht und dann hab ich die fehlermeldung bekommen zugriff verweigert was ja eigentlich nicht sein kann! also mit dem net. befehl!
und hier der quellcode mit net use, da kommt dann immer anweisungsend erwartet:

set shell = CreateObject("Wscript.Shell") call GetUserName("", strUserName, strPassword) shell run "net use W: \\19xxx4\g$", false, "AOSxxxE\"& strUserName, strPassword


woran liegt das?
Member: Logan000
Logan000 Oct 30, 2008 at 10:41:07 (UTC)
Goto Top
Moin

Sorry wegen dem letzten Codes-chnippsel. Zuviel Copy & Paste und nicht genau hingesehen.

Es müste in etwa so aussehen:
... 
 set shell = CreateObject("WScript.Shell")    
 shell.run "net use  W: \\191.32.....4\g$," & strPassword & ", /USER:AO....TE\" & strUserName   
...

Gruß L.
Member: braunse
braunse Oct 30, 2008 at 11:17:32 (UTC)
Goto Top
zuerst pw und dann domäne? ich versuchs mal!danke

also wenn ich den befehl so nehme, dann springt immer ein dos fenster auf in dem steht username oder pw falsch! bitte geben sie das passwort für xxx ein. dann geb ich es ein das fenster schließt sich aber das nw ist noch nicht verbunden!?

muss das nicht irgendwie User:strUserNAme@A....TE heißen?
Member: Logan000
Logan000 Oct 30, 2008 at 12:16:19 (UTC)
Goto Top
Zitat von @braunse:
zuerst pw und dann domäne? ich versuchs mal!danke
Ja. zum Nachlesen.
also wenn ich den befehl so nehme, dann springt immer ein dos fenster
auf in dem steht username oder pw falsch!
bitte geben sie das passwort
für xxx ein.
Diese Meldung bekomme ich nur dann wenn StrPasswort leer bzw. bei Net use kein Passwort angegeben ist.
aber das nw ist noch nicht verbunden!?
Da wird (wahrscheinlich" die Meldung ausgegeben:
"Anmeldung fehlgeschlagen: unbekannter Benutzername oder falsches Kennwort"
und das donsolenfenster sofort geschlossen.

Mach mal folgendes:
...  
 set shell = CreateObject("WScript.Shell")     
 Test = "net use  W: \\191.32.....4\g$," & strPassword & ", /USER:AO....TE\" & strUserName    
 msgbox Test
 shell.run test
...

Auf diese weise bekommst du die Net Use Befehlszeile als Message angezeigt und kannst diese auf Richtigkeit überprüfen/ausprobieren.


Gruß L.
Member: braunse
braunse Oct 30, 2008 at 12:28:27 (UTC)
Goto Top
Hab ich gemacht und das was ich eingebe, wird dann angezeigt, also passt soweit.
aber es kommt immer noch das consolenfenster und es wird gemeldet user oder pw falsch! geben sie ihr passwort ein! dann geb ichs ein, dass fenster geht zu aber das nw ist nicht verbunden!??
Member: Logan000
Logan000 Oct 30, 2008 at 12:55:30 (UTC)
Goto Top
Moin
Liest Du eigentlich was ich so alles schreibe?
Auf diese weise bekommst du die Net Use Befehlszeile als Message angezeigt und kannst diese auf Richtigkeit überprüfen/ausprobieren.
Also skript starten auf Messagebox warten.
Messagebox nicht schliessen, sondern
Start / Ausführen cmd eingeben. Enter.
im Dos Fenster den net use Befehl aus der Messagebox abtippen. Enter.
Auf diese Art bekommst du auch die Meldung zu sehen, die sonst vom sich schliessenden DOS Fenster "verschluckt" wird.
Und jetzt schaue ich ein meine Kristallkugel.
da wird stehen (Trommelwirbel):
"Anmeldung fehlgeschlagen: unbekannter Benutzername oder falsches Kennwort"
Falls ich recht habe:
Aus diesem Grund wird das Netzlaufwerk auch nicht verbunden.
Aus dem gleichen Grund wurde das Netzlaufwerk auch mit MapNetworkDrive nicht verbunden.
Fall ich mich irren sollte:
Welche Meldung wird ausgegeben?

Gruß L.
Member: braunse
braunse Oct 30, 2008 at 13:15:36 (UTC)
Goto Top
Serwas,
ja hab alles gelesen! mittlerweile wurde auch ein fehler gefunden der natürlich alles erklärt und zwar haben sich die domadmins im share "geirrt". habs abgeändert und läuft ohne probleme! habe auch wieder auf set. fs und net.... zurück gegriffen!
Vielen Dank aber nochmal für die super Hilfe, konnte vieles lernen.
Danke und Tschüss