schmidtke
Goto Top

Automatische Netzlaufwerksverbindung bei wechselner IP

Netzlaufwerke automatisch Verbinden bei wechselner IP - Adresse durch DHCP (mit Skript)

Hallo,
ich benötige mal eure Hilfe. Mein Admin hat mir folgendes VBS - Skript zukommen lassen.

Const server = "XXX"

Dim WshNetwork

on error resume next
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "I:", "\\" & server & "\QDLS", False,

if Err.Description <> "" then
MsgBox "Fehler! Laufwerk I: konnte nicht mit \qdls verbunden werden, oder ist bereits verbunden."
end if

WshNetwork.MapNetworkDrive "S:", "\\" & server & "\SOFTWARE", False,

if Err.Description <> "" then
MsgBox "Fehler! Laufwerk S: konnte nicht mit \software verbunden werden, oder ist bereits verbunden."
end if

WshNetwork.MapNetworkDrive "O:", "\\" & server & "\OFFICE", False,

if Err.Description <> "" then
MsgBox "Fehler! Laufwerk O: konnte nicht mit \office verbunden werden, oder ist bereits verbunden."
end if

Mein Problem ist nun das ich täglich mich an anderen Servern anmelde (mittels DHCP). Ich muß nun jedesmal im Skript die "XXX" beim "Const server" durch die IP - Adresse des jeweiligen Servers ersetzen.
Meine Frage ist nun, ob das nicht auch automatisch geschehen kann, da der DHCP ja der Netzwerkeinstellung diese IP mitteilt. Mein Admin meint das geht nicht, aber das kann ich fast nicht glauben. Hat er Recht???

Vielen Dank für eure Hilfe im voraus.

Marco

Content-ID: 18101

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

Ausgedruckt am: 26.11.2024 um 09:11 Uhr

gemini
gemini 20.10.2005 um 11:40:50 Uhr
Goto Top
Schreib doch den Namen des Servers in die Kontante.
Wenn ein DNS läuft, was in einer Domäne sowieso zwingend ist, wird der Name richtig aufgelöst.
~~~~~~~~~~~~~
Es gibt eine Umgebungsvariable %LOGONSERVER%, die auf den jeweligen Server verweist an dem authentifiziert wurde.
Einfach mal
set
in der Kommandozeile eingeben

Wenn du die Konstante mit der Vaiablen belegst (oder die Variable direkt angibst) wird immer der richtige Server gefunden.

Const server = %LOGONSERVER%

Gruß
gemini
Schmidtke
Schmidtke 20.10.2005 um 11:58:38 Uhr
Goto Top
Hallo,
ich muß gestehen das ich von Skripten keine Ahnung habe. Wenn ich deinem Beispiel folge und an der Eingabeaufforderung SET=LOGONSERVER angebe, wird mein Notebook angezeigt. Das liegt wohl daran, das ich mich auf meinem Laptop anmelde und nicht am Server. Auf diesen will ich nur auf die Laufwerke zugreifen. Meine jeweilige IP bekomme ich aber vom DHCP der auch auf dem Server läuft. Eine DOMÄNE ist das auch nicht.

Hast Du evtl. noch einen anderen Lösungsvorschlag??

Gruß
Marco
gemini
gemini 20.10.2005 um 12:51:39 Uhr
Goto Top
Hi Marco,

keine Ahnung habe. Wenn ich deinem Beispiel folge und an der Eingabeaufforderung
SET=LOGONSERVER angebe, wird mein Notebook
Ich schrieb, du solltest set in der Kommandozeile eingeben, nicht set=LOGONSERVER.
Bei set werden dir nämlich alle Umgebungsvariablen angezeigt.
Aber egal, ohne Domäne ist das sowieso irrelevant weil %LOGONSERVER% dann dein Laptop ist.

Laufwerke zugreifen. Meine jeweilige IP bekomme ich aber vom DHCP der auch auf dem
Server läuft.
DEINE IP spielt hierbei keine Rolle, was wir brauchen ist die IP oder der Name des Servers.
Auf die Schnelle fällt mir jetzt keine einfache Lösung ein.

Außer vielleicht in dem Script die Argumente zu aktivieren und die IP, die dir ja bekannt ist, als Argument zu übergeben. Das würde es zumindest ersparen, das Script selbst bearbeiten zu müssen.
Eine Komfortlösung mit einer Inputbox und Validierung des eingegebenen Wertes ist natürlich auch möglich.
Fällt aber alles in die Kategorie Workaround.

Gruß
gemini
Schmidtke
Schmidtke 20.10.2005 um 13:07:44 Uhr
Goto Top
Hallo,
die IP - Adresse die ich jedesmal eintragen muß, finde ich immer über IPCONFIG/ALL. Die Adresse des Standardgateway ist die, die ich eintragen muss.
Kann ich das nicht auch mit einem Skript abfragen???

Gruß
Marco
gemini
gemini 20.10.2005 um 13:32:05 Uhr
Goto Top
Versuchs mal damit
' ~~~~~~~~~~~~~~~~~~~
strComputer = "<<a>NameDeinesLaptops<a>>"
Set objWMIService = GetObject("winmgmts:\\"& strComputer & "\root\cimv2")
Set colAdapters = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

For Each objAdapter in colAdapters
If Not IsNull(objAdapter.DefaultIPGateway) Then
For i = 0 To UBound(objAdapter.DefaultIPGateway)
server = objAdapter.DefaultIPGateway(i)
Next
End If
Next

on error resume next
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "I:", "\\" & server & "\QDLS", False,

if Err.Description <> "" then
MsgBox "Fehler! Laufwerk I: konnte nicht mit \qdls verbunden werden, oder ist bereits verbunden."
end if

WshNetwork.MapNetworkDrive "S:", "\\" & server & "\SOFTWARE", False,

if Err.Description <> "" then
MsgBox "Fehler! Laufwerk S: konnte nicht mit \software verbunden werden, oder ist bereits verbunden."
end if

WshNetwork.MapNetworkDrive "O:", "\\" & server & "\OFFICE", False,

if Err.Description <> "" then
MsgBox "Fehler! Laufwerk O: konnte nicht mit \office verbunden werden, oder ist bereits verbunden."
end if
' ~~~~~~~~~~~~~~~~~~~
Biber
Biber 20.10.2005 um 15:18:41 Uhr
Goto Top
Moin, Marco,
falls Du das Skriptchen Deines Admins nur um einen zu übergebenden Parameter "IP-des-LogonServers" erweitern willst: Hier im Forum gibt es -zig Ein- bis Fünfzeiler als *.bat oder *.vbs, die eine IP ermitteln und/oder in eine Umgebungsvariable schreiben.
Findest Du wahrscheinlich über "GetIP" oder "IP-Adresse ermitteln".

Eins von vielen Oneliner-Bat-Beispielen wäre:
for /F "Tokens=3 Delims=: " %%i in ('@ping -n 1 "%LOGONSERVER%"^|Find /i "Antwort von"') do  set IP=%%i   

Aber - unter uns gesagt - ich fände es sinnvoller, einfach alles in dem von dir geposteten Codeschnipsel abzufackeln. So viel Zauberei und Hexenwerk, wie Dein Admin behauptet, ist da IMHO nicht dabei.

Ich habe auf jeden Fall mehr Vertrauen in geminis Skripte als in den rührenden Versuch Deines Admins.

Grüße
Frank / der Biber aus Bremen
Schmidtke
Schmidtke 20.10.2005 um 15:35:15 Uhr
Goto Top
Hallo,
leider bekomme ich bei der Ausführung deines Skriptes immer nur die Fehlermeldungen


MsgBox "Fehler! Laufwerk O: konnte nicht mit \office verbunden werden, oder ist bereits verbunden."


zu Gesicht. Es werden keine Laufwerke eingebunden.

Da hat mein Admin wohl doch Recht. Schade eigendlich.

Gruß
Marco
Schmidtke
Schmidtke 20.10.2005 um 15:37:09 Uhr
Goto Top
Hallo Frank,
das Problem ist das der Logonserver mein Laptop ist und nicht der Server.
Ich muss immer die IP des Servers, wie obern bereits beschrieben, ermitteln und dann im Skript eintragen.

Gruß
Marco
Biber
Biber 20.10.2005 um 16:04:12 Uhr
Goto Top
@marco
>das Problem ist das der Logonserver mein Laptop ist und nicht der Server.
Kann ich kaum glauben und versteh ich auch nicht.
<s>Ich hatte es so verstanden, dass es wechselnde Server gibt, die aber jeweils diese Unterverzeichnisstrukturen bereitstellen, die Du als Laufwerk I:, O: und S: einbindest.
Und diese Server sind NICHT gleich dem Logonserver? Aus welchesr Zeile des "IpConfig /all"-Outputs holst Du denn bisher die IP-Info? DHCP-Server?
Dann halt den obigen Einzeiler anpassen auf 'ipconfig /all' und 'find "DHCP-Server"'.</s>

Grüße
Biber
[Edit] Sorry, ich hatte es überlesen mit dem Standardgateway.
for /F "tokens=2 delims=:" %%i in ('ipconfig /all ^|find "Standardgate"') do set IP=%%i
dieser Batch-Oneliner schreibt Dir die IP des Standardgateways in eine Umgebungsvariable %IP%
Jetzt kannst Du in dem VBS-Snippet Const server = %IP% schreiben.
P.S. Dass aber bei beim Testen von geminis Skript nur das Laufwerk O: nicht gefunden wird, deutet eher auf einen Tippfehler hin... oder darauf, dass kein "\\server\office"-Verzeichnis verfügbar ist.
[/Edit]
gemini
gemini 20.10.2005 um 16:54:04 Uhr
Goto Top
Nun, vielleicht ist das Laufwerk ja bereits verbunden?

Füge einfach nach On Error eine Zeile mit
MsgBox server
ein.
Diese zeigt die IP an, die nach Eingabe von ipconfig -all als Standardgateway zurückgegeben wird.

Zum testen kannst du nach jedem Mapping
MsgBox "Err.Description: " & Err.Description  
ausführen.

Ich würde sowieso alle Mappings trennen und dann neu verbinden. Zum Beispiel so:
Set colDrives = WshNetwork.EnumNetworkDrives
Const blnForce = TRUE
On Error Resume Next
If colDrives.Count > 0 Then
  For i = 0 To colDrives.Count - 1 Step 2
	WshNetwork.RemoveNetworkDrive colDrives(i), blnForce
  Next
End If
On Error GoTo 0
gemini
gemini 20.10.2005 um 16:57:14 Uhr
Goto Top
@Biber
Kann ich kaum glauben und versteh ich auch nicht.
Der Laptop ist in keiner Domäne.
Er meldet sich also lokal am Laptop an, folglich ist der Laptop auch %LOGONSERVER%

Anscheinend gibt es in dem Netz mehrere Server, die eine identische Verzeichnisstruktur haben.
Biber
Biber 20.10.2005 um 17:12:37 Uhr
Goto Top
@gemini
>Er meldet sich also lokal am Laptop an, folglich ist der Laptop auch %LOGONSERVER%
Ja, habe ich mir auch inzwischen zusammengereimt. Habe mich verleiten lassen durch Marco's "ich täglich mich an anderen Servern anmelde...", da war ich gleich bei Domäne und Logonserver.

>Anscheinend gibt es in dem Netz mehrere Server, die eine identische Verzeichnisstruktur haben.
Das wiederum hatte ich verstanden face-wink

Grüße
Biber
gemini
gemini 20.10.2005 um 18:26:37 Uhr
Goto Top
@Biber
Das wiederum hatte ich verstanden face-wink
Na, dann bin ich ja beruhigt face-wink

@marco
So, nach Feierabend hab ich mehr Zeit face-wink
Ich hoffe dass es deinen Anforderungen gerecht wird; bei mir hat es funktioniert.

What it does:
Standardgateway aus der Netzwerkkonfiguration ermitteln
ALLE Netzlaufwerke trennen
Netzlaufwerke verbinden
Ergebnisse zusammenstellen
Popup mit den Ergebnissen

Nicht enthalten sind Fehlerroutinen. Eine Aufgabe für deinen Admin!

' ########################
' MarcoLogsOn.vbs#############
' ########################
Option Explicit

Const blnForce = TRUE
Const blnNoPersist = FALSE

Dim WshNetwork, WshShell, objWMIService, objAdapter
Dim colDrives, colAdapters
Dim strMsg, strUserName, strCompName, strServerIP
Dim i, numSec2Wait

Set WshNetwork = Wscript.CreateObject("Wscript.Network")
Set WshShell = Wscript.CreateObject("Wscript.Shell")
strUserName = WSHNetwork.UserName
strCompName = WSHNetwork.ComputerName
Set objWMIService = GetObject("winmgmts:\\"& strCompName & "\root\cimv2")
Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

numSec2Wait = "10"

For Each objAdapter in colAdapters
If Not IsNull(objAdapter.DefaultIPGateway) Then
For i = 0 To UBound(objAdapter.DefaultIPGateway)
strServerIP = objAdapter.DefaultIPGateway(i)
Next
End If
Next

Set colDrives = WshNetwork.EnumNetworkDrives
On Error Resume Next
If colDrives.Count > 0 Then
For i = 0 To colDrives.Count - 1 Step 2
WshNetwork.RemoveNetworkDrive colDrives(i), blnForce
Next
End If
On Error GoTo 0

WshNetwork.MapNetworkDrive "I:", "\\" & strServerIP & "\QDLS", blnNoPersist
WshNetwork.MapNetworkDrive "S:", "\\" & strServerIP & "\SOFTWARE", blnNoPersist
WshNetwork.MapNetworkDrive "O:", "\\" & strServerIP & "\OFFICE", blnNoPersist

Set colDrives = WshNetwork.EnumNetworkDrives
strMsg = strMsg & vbCrLf & "Anmelde Ergebnisse" & vbCrLf & vbCrLf & _
"Benutzername" & Chr(9) & "= " & strUserName & vbCrLf & "Computername" & _
Chr(9) & "= " & strCompName & vbCrLf
If colDrives.Count = 0 Then
strMsg = strMsg & vbCrLf & "Kein Netzlaufwerk ist verbunden." & vbCrLf
Else
strMsg = strMsg & vbCrLf & "Verbundene Netzlaufwerk(e):" & vbCrLf
For i = 0 To colDrives.Count - 1 Step 2
strMsg = strMsg & vbCrLf & colDrives(i) & Chr(9) & colDrives(i + 1)
Next
End If

WshShell.PopUp strMsg,numSec2Wait,strUserName & "@" & strCompName,64
' ### eof ###
Biber
Biber 20.10.2005 um 18:38:38 Uhr
Goto Top
@gemini
... ich muss hier ja nicht alles sofort verstehen...sind ja genug Kompetente da, die es mir geduldigst erklären... face-wink

Aber a propos "nicht verstehen":
Warum nennt ihr VB-Skripter denn eine Stringvariable "numSec2Wait"??? *lacht
...nein...nicht antworten jetzt... war nur Spaß... face-big-smile

...im Gegenzug verzichte ich darauf, Marco ein komplettes Anmeldescript als Batchvariante zu posten...

Schönen Feierabend!
gemini
gemini 20.10.2005 um 18:49:56 Uhr
Goto Top
@Biber
Warum nennt ihr VB-Skripter denn eine Stringvariable
"numSec2Wait"???
Erbsenzähler!! face-wink face-wink

Außerdem, das waren nicht DIE VB-Scripter sondern nur ich.
Oder machen das alle so, dann wärs ja wieder normal.

...nein...nicht antworten jetzt... war nur Spaß... face-big-smile
Spaß?!? Wir Bayern verstehen keinen Spaß *grins*

...im Gegenzug verzichte ich darauf, Marco ein komplettes Anmeldescript als
Mach das, dann hat Marcos Admin was zum grübeln fürs Wochenende face-big-smile
Biber
Biber 20.10.2005 um 19:16:10 Uhr
Goto Top
@gemini
*kopfschüttel.. dass diese dickköpfigen Bayern immer das letzte Wort haben müssen...
..aber mit Dir chatte ich trotzdem am liebsten.. face-wink

@marco
Kleb Deinem Admin geminis Skript und meinen Fünfzeiler auf den Monitor.
::-----snipp MarcosLogOn.Bat
@echo off & setlocal
for /F "tokens=2 delims=:" %%i in ('ipconfig /all ^|find "Standardgate"') do set "IP=%%i"  
set "IP=%IP: =%"       || REM [Edit] <i>Nachtrag: Leerzeichen entfernen</i>[/Edit]  
Net use * /d >nul 2>&1
(Net use I: \\%IP%\QDLS >nul 2>&1)|| echo Laufwerk I: konnte nicht verbunden werden!
(Net use O: \\%IP%\Software >nul 2>&1)|| echo Laufwerk O: konnte nicht verbunden werden!
(Net use S: \\%IP%\Office >nul 2>&1) || echo Laufwerk S: konnte nicht verbunden werden!
::-----snapp MarcosLogOn.Bat
*Winks in den Süden
Biber
Schmidtke
Schmidtke 21.10.2005 um 08:53:17 Uhr
Goto Top
Hallo Gemini und Biber,
vielen Dank für eure Hilfeversuche. Aber es klappt nicht.
Nochmals zur Erklärung:
Ich bin im Außendienst unterwegs. Meine Firma hat in jeder Filiale einen Fileserver stehen, der als IP - Adresse die Adresse des Standardgateway hat. Der Ablauf sieht immer wie folgt aus. Anmeldung am Laptop, ermitteln des Standardgateway, im gesendeten Skript meines Admins die IP - Adresse eintragen.
Kann es mit euren Skripten auch daran liegen, das ich auf meinem Laptop (WIN XP Pro.) nur "Hauptbenutzer" bin ?
Außerdem vergaß ich noch zu erwähnen, das ich zur Anmeldung einen anderen USER und ein Kennwort mit angeben muß. Im Skript meines Admins ist das enthalten und zwar direkt hinter

WshNetwork.MapNetworkDrive "I:", "\\" & server & "\QDLS", False, "USER", "KENNWORT"

Kann es auch daran liegen, das die Skrips nicht gehen.

Gruß
Marco

P.S. Konnte mich leider gestern nicht mehr melden weil ich wieder im Auto auf dem Weg nach Hause war.
Schmidtke
Schmidtke 21.10.2005 um 08:56:04 Uhr
Goto Top
Hallo,
das mit der Fehlermeldung vom Laufwerk O war nur ein Beispiel. Das kommt natürlich auch bei allen anderen vor.

Gruß
Marco
gemini
gemini 21.10.2005 um 09:20:31 Uhr
Goto Top
Ich habs bei mir lokal gestestet und es hat funktioniert.
Es hat sowohl die richtige Gateway-IP zurückgeliefert als auch die Laufwerke richtig verbunden.

Füge mal nach
strServerIP = objAdapter.DefaultIPGateway(i)
die Zeile
MsgBox strServerIP
ein.
Die MessageBox müsste die IP des Gateways in der Form aaa.bbb.ccc.ddd ausgeben.

Nach jedem
WshNetwork.MapNetworkDrive...
eine weitere MessageBox
MsgBox Err.Number & " " & Err.Description  
Nun bekommst du den 'echten' Fehler zurückgeliefert
Schmidtke
Schmidtke 21.10.2005 um 10:14:14 Uhr
Goto Top
sooooooooooryyyyyyyyyy

Mein Fehler.
Ich benötige "nicht" die IP des Standardgateway, sondern die des DHCP Servers. ;-(

Geht das auch abzufragen???

Endschuldigt, das ich Euch soviel Mühe mache.

Gruß
Marco

P.S. Heulend in der Ecke stehend
Schmidtke
Schmidtke 21.10.2005 um 10:42:19 Uhr
Goto Top
Hallo,
ich bin es schon wieder.

Den Anmeldenamen und das Kennwort welches ich zum Verbinden benötige (ist nicht gleich mit den Anmeldedaten auf dem Laptop) trage ich das in deinem Skript hier ein ??

strUserName = WSHNetwork.UserName
strCompName = WSHNetwork.ComputerName

Wenn ja, einfach ersetzen oder muß das in " " eingetragen werden.

Besten Dank
Marco
gemini
gemini 21.10.2005 um 11:51:24 Uhr
Goto Top
*mitdemkopfandiewandschlag*

Ich hab momentan keine Zeit den DHCP per VBS rauszusuchen

Nimm einfach Biber's Batch und ersetze die Zeile
for /F "tokens=2 delims=:" %%i in ('ipconfig /all ^|find "Standardgate"') do set "IP=%%i"
mit
for /F "tokens=2 delims=:" %%i in ('ipconfig /all ^|find "DHCP"') do set "IP=%%i"
gemini
gemini 21.10.2005 um 11:53:49 Uhr
Goto Top
Wenn ja, einfach ersetzen oder muß das in " " eingetragen werden.
Muss in " " stehen, ist ja die Zuweisung eines Wertes zu einer Variablen und nicht die Variable selbst oder eine Anweisung.
Schmidtke
Schmidtke 21.10.2005 um 12:12:39 Uhr
Goto Top
Aber bitte keine Beule holen

Auch wenn ich mich nun als "Lusche" oute, muß ich die Batchzeilen mit in das Skript einfügen, oder muß das eine extra *.vbs Datei sein ???

Gruß
Marco
Biber
Biber 21.10.2005 um 12:17:29 Uhr
Goto Top
Moin Marco,

kannst wieder aus der Ecke vorkommen... jetzt haben wir Dich lang genug zappeln lassen *gg

Also, meine *.bat Variante sähe dann so aus:
::-----snipp MarcosLonOn.Bat
@echo off & setlocal
Set "Errtext=Laufwerk konnte nicht verbunden werden!"  
Set "Marco=MarcosUsername" & set "pw=MarcosPassword"  
for /F "tokens=2 delims=:" %%i in ('ipconfig /all ^|find "DHCP-Server"') do set "IP=%%i"  
set "IP=%IP: =%"       || REM  Leerzeichen entfernen  
Net use * /d >nul 2>&1
(Net use I: \\%IP%\QDLS /USER:%Marco% %pw%>nul 2>&1)|| echo Das I:-%ErrText%
(Net use O: \\%IP%\Software /USER:%Marco% %pw% >nul 2>&1)|| echo Das O:-%ErrText%
(Net use S: \\%IP%\Office /USER:%Marco% %pw% >nul 2>&1) || echo Das S:-%ErrText%
::-----snapp MarcosLonOn.Bat

Ich habe da oben mit Set "Marco=MarcosUsername" & set "pw=MarcosPassword" Deinen Usernamen und Dein Passwort vorgesehen. Da müssen natürlich Deine Echtdaten rein.
Ich bin davon ausgegangen, dass Username und Password für alle Share-Laufwerke gleich sind.
Und dass Dein IPConfig auch in einer Zeile ausgibt: "DHCP-Server... ....face-sadIP-Addr)".
~~~
In geminis Skript kannst Du entsprechend:
...
strUserName = "MarcosUsername"   
strPassword = "MarcosPasswort"  
...
WshNetwork.MapNetworkDrive "O:", "\\" & strServerIP & "\OFFICE", blnNoPersist , strUsername, strPassword   
....
setzen.

Aber wie nun der DHCP-Server bei den VB-Skriptern heißt??? *grübel... Weiß nur gemini...
Wahrscheinlich numDHCPServer face-big-smile

Also warte da lieber auf gemini. Denn ich denke, Dein Admin weiß das bestimmt nicht.
Grüße
Biber
Biber
Biber 21.10.2005 um 12:36:28 Uhr
Goto Top
*grmmmmbl*.... spielerisch mir dem nassen Handtuch in der Hand die Entfernung zu Marco abschätzt..

Ich versuchs mal zu sortieren, Marco:

Zuerst (m)einen Batch laufen lassen und am besten den das VBSkript rufen lassen:
::---Snipp --MarcoLogsOn.bat
@echo off & setlocal
for /F "tokens=2 delims=:" %%i in ('ipconfig /all ^|find "DHCP-Server"') do set "IP=%%i"  
set "IP=%IP: =%"  
:: nächste Zeile...Aufruf von Geminis Skript !! Username und Passwort dort anpassen!!!
cscript //nologo c:\pfadZurVBS\MarcoLogsOn.Vbs %IP%
::--------Snapp --MarcoLogsOn.bat

So, und aus erzieherischen Gründen sortierst du mal am Wochenende den Thread durch und machst ein halbseitiges Tutorial draus... face-wink

Biber

[Edit]
Das wichtigste: geminis Skript muss natürlich einen Parameter annehmen..diese DHCP-IP, die mein Bätchelchen rübergibt.
Alternativ: keinen Parameter und im *.vbs die Variable %IP% einlesen.

Kurz:
entweder: strServerIP = objArgs(0) ........(Parameter übergeben)
oder: strServerIP = %IP% ...........(Umgebungsvariable auslesen)
[/Edit]
Schmidtke
Schmidtke 21.10.2005 um 12:55:46 Uhr
Goto Top
Hallo Biber,
vielen Dank für deine Hilfe.
Da ich das Ganze gerne in einer Datei hätte, warte ich noch auf Gemini.
Vieleicht ist er ja so nett, einem Anfänger wie mir, trotz "Beulen" (nochmal sorry) dies als ganzes Skript zur Verfügung zu stellen. * Hoff*

Schönes WE, habe nun Wochenende und kann somit dies auch erst am Montag wieder ausprobieren.

mfg
Marco
Schmidtke
Schmidtke 21.10.2005 um 12:57:56 Uhr
Goto Top
Ich würde wirklich gerne deiner Aufforderung (erzieherische Maßnahme) nach kommen, weiß aber leider nicht wie.

Gruß
Marco
gemini
gemini 21.10.2005 um 13:04:29 Uhr
Goto Top
Also warte da lieber auf gemini. Denn ich denke, Dein Admin
weiß das bestimmt nicht.
Momentan weiß ich es auch nicht face-sad

Was ich aber weiß; in 2 Std. ist Feierabend und dann freu ich mich auf einen schönen Kurzurlaub bei Freunden an der Nordsee face-smile face-smile

Ganz ohne VBS und Batch und mit ganz wenig Computer face-wink
Biber
Biber 21.10.2005 um 13:13:45 Uhr
Goto Top
@marco
face-wink War auch nicht sooooooo ernst gemeint...

Wäre nur für nachfolgende User einfacher, wenn unter Deiner Überschrift: "Automatische Netzlaufwerksverbindung bei wechselnder IP" und einer kurzen Problem-Beschreibung dann nur die beiden "endgültigen" *.vbs bzw. *bat-Skizzen stehen würden.

Wenn ein ohnehin mit den Nerven vibrierender Ratsuchender hier alle Irrwege nachvollziehen soll incl. der datumsmäßig durcheinandergehenden Teilthreads... der wird auch mit dem Kopf gegen die Wand wummern.
So wie gemini seit Stunden face-big-smile

Schönes Wochenende
Biber
Biber
Biber 21.10.2005 um 13:21:35 Uhr
Goto Top
@gemini
Falls Du über Bremen fährst, spendier ich Dir ein paar Schmalzkuchen auf dem Freimarkt face-wink

Aber auch andernfalls ein Schönes Wochenende!
Schmidtke
Schmidtke 21.10.2005 um 13:27:10 Uhr
Goto Top
@Biber
Guten Hunger. Vieleicht komm ich auch nochmal dahin. DEL ist ja nicht so weit.

@gemini
Schönen Urlaub wünsche ich. Und Erholung von solchen Leuten wie mir face-wink

mfg
Marco
gemini
gemini 21.10.2005 um 14:31:41 Uhr
Goto Top
Aber wie nun der DHCP-Server bei den VB-Skriptern heißt??? *grübel...
Weiß nur gemini...
Wahrscheinlich numDHCPServer face-big-smile
Falsch Biber, DHCP-Server werden IMMER als Bool'sche-Werte angegeben.
Entweder ist einer da, dann ist blnDHCPServer = TRUE oder eben nicht, dann halt FALSE face-wink

In diesem Sinne
Have a good time!
Biber
Biber 21.10.2005 um 14:52:25 Uhr
Goto Top
@gemini
Verpass bloß nicht Urlaub und Fähre wegen dieses Threads.
Sonst kommst Du an der Nordsee an und das Meer ist weg.. das passiert mir auch immer. face-wink
gemini
gemini 21.10.2005 um 19:25:52 Uhr
Goto Top
@Biber
Verpass bloß nicht Urlaub und Fähre wegen dieses Threads.
Nach WHV brauchts noch keine Fähre, es sei denn das Meer gewinnt Land face-wink

@marco
So ein Schlag gegen den Kopf bewirkt oftmals positives face-wink
Ich hoffe diese Version erfüllt jetzt deine Anforderungen.
Ich habe es nicht mehr getestet!!!

Noch benutzerfreundlicher kann man es fast nicht machen.
Gestatte mir noch den Hinweis, dass die Credentials im Klartext in dem Script stehen!!!

Falls jetzt, was ich gar nicht mehr ausschließen möchte, plötzlich die Problematik auftaucht dass auf jedem Share andere Credentials gelten.
Ich habe in dieser Sache dann vollstes Vertrauen in deinen Admin face-wink

' ##########################
' MarcoLogsOnUsingTheDhcpIP.vbs ####
' aka MarcosNeverendingLogonstory.vbs #
' ##########################
Option Explicit

Const blnForce = TRUE

Dim WshNetwork, WshShell, objWMIService, objAdapter
Dim colDrives, colAdapters
Dim strMsg, strUserName, strCompName, strServerIP
Dim i, strSec2Wait, strUser, strPass

strSec2Wait = "10"
strUser = "MarcosUsername"
strPass = "MarcosPasswort"

Set WshNetwork = Wscript.CreateObject("Wscript.Network")
Set WshShell = Wscript.CreateObject("Wscript.Shell")
strUserName = WSHNetwork.UserName
strCompName = WSHNetwork.ComputerName
Set objWMIService = GetObject("winmgmts:\\"& strCompName & "\root\cimv2")
Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

For Each objAdapter in colAdapters
strServerIP = objAdapter.DHCPServer
Next

Set colDrives = WshNetwork.EnumNetworkDrives
On Error Resume Next
If colDrives.Count > 0 Then
For i = 0 To colDrives.Count - 1 Step 2
WshNetwork.RemoveNetworkDrive colDrives(i), blnForce
Next
End If
On Error GoTo 0

WshNetwork.MapNetworkDrive "I:", "\\" & strServerIP & "\QDLS", , strUser, strPass
WshNetwork.MapNetworkDrive "S:", "\\" & strServerIP & "\SOFTWARE", , strUser, strPass
WshNetwork.MapNetworkDrive "O:", "\\" & strServerIP & "\OFFICE", , strUser, strPass

Set colDrives = WshNetwork.EnumNetworkDrives
strMsg = strMsg & vbCrLf & "Anmelde Ergebnisse" & vbCrLf & vbCrLf & _
"Benutzername" & Chr(9) & "= " & strUserName & vbCrLf & "Computername" & _
Chr(9) & "= " & strCompName & vbCrLf
If colDrives.Count = 0 Then
strMsg = strMsg & vbCrLf & "Kein Netzlaufwerk ist verbunden." & vbCrLf
Else
strMsg = strMsg & vbCrLf & "Verbundene Netzlaufwerk(e):" & vbCrLf
For i = 0 To colDrives.Count - 1 Step 2
strMsg = strMsg & vbCrLf & colDrives(i) & Chr(9) & colDrives(i + 1)
Next
End If

WshShell.PopUp strMsg,strSec2Wait,strUserName & "@" & strCompName,64
' ### eof ###
Schmidtke
Schmidtke 22.10.2005 um 16:36:12 Uhr
Goto Top
Hallo Gemini,
ich hoffe der Kurztrip nach WHV war erholsam.
Dein Skript ist völlig ok.
Wenn ich MsgBox strServerIP einfüge gibt er mir die korrekte IP an.
Leider bekomme ich trotzdem immer die Fehlermeldung:

Der Netzwerkpfad wurde nicht gefunden

Ich glaub, ich lasse das mit dem Skript sein. Der Admin hat wohl doch recht. Schade eigendlich. Oder liegt das doch daran das ich am LT keine Admin-Rechte habe, sondern nur Benutzer????

Ich werde ihn (Admin) mal dein Skript zukommen lassen. Vieleicht kann er noch was daran drehen (Hoff).

Trotzdem schönen Dank für deine Hilfe.

mfg
Marco
Schmidtke
Schmidtke 22.10.2005 um 17:08:39 Uhr
Goto Top
Ich bin nochmal.
Habe dein Skript gerade auf einen anderen PC im Netzwerk laufen lassen. Dort geht es wunderbar.
Der Unterschied von den beiden Rechnern ist eigendlich nur die Arbeitsgruppe (z.B. LT ist Hammer, der PC ist Hammer101).
Der Server ist, wo ich mich anmelden muß, ist jeden Tag in einer anderen Arbeitsgruppe.
Kann es auch daran liegen????

mfg
Marco
Biber
Biber 22.10.2005 um 23:14:15 Uhr
Goto Top
Moin Marco,
nun lass gemini doch mal einen Tach im Norden reläxen, der muss es das ganze Rest-Jahr über in Bayern aushalten...

Zur Beantwortung Deiner Frage wäre folgende Info interessant:
- funktioniert denn an dieser Stelle das "Musterskript" Deines Admins an dem PC, wo geminis Skript aussteigt?
- funktioniert denn da meine Batchvariante?

Habe übrigens beantragt, dass wir für diesen Thread sicherheitshalber eine eigene Rubrik aufmachen face-wink

Und auf diese beiden Behauptungen gehe ich keinem Wort ein:
> .. ich lasse das mit dem Skript sein. Der Admin hat wohl doch recht.
Ich werde ihn (Admin) mal dein Skript zukommen lassen. Vieleicht kann er noch was daran drehen
..bestimmt... der sieht sofort unsere Tippfehler... face-big-smile face-big-smile

Schönes Rest-WE
Biber
Schmidtke
Schmidtke 23.10.2005 um 13:59:30 Uhr
Goto Top
Hallo Biber,
natürlich gönne ich gemini den Urlaub an der schönen See. Wird für Ihn eine richtige Erholung sein, wenn er doch sonst immer nur in Bayern ist face-smile

Also,
das Musterskript vom Admin geht auf allen PC (LT sowie Workstation).
Das Skript von gemini läuft auf den WS aber nicht auf meinem LT. Unterschied hier, wie bereits oben beschrieben.
Dein Batch läuft auf meinem LT auch nicht. Auf den WS habe ich es noch nicht ausprobiert.

Auch Dir noch ein schönes Rest-WE

Marco
Schmidtke
Schmidtke 25.10.2005 um 09:54:54 Uhr
Goto Top
Moin biber,
habe gestern nochmals dein Batch und gemini Skript ausprobiert. Die Sachlage sieht momentan so aus:

WS (AG 1) = Amin-Skript geht, gemini Skript geht, dein Batch geht nicht (Fenster bleibt ohne Regung offen).

WS (AG2) = Admin-Skript geht, dein Batch geht, gemini Skript muß ich noch testen.

LT (AG2) = nur Admin-Skript geht.

{AG = Arbeitsgruppe}

Das ist doch paradox oder nicht. Ich hoffe das das an den verschiedenen Arbeitsgruppen liegt. Vieleicht bekommt man (gemini face-smile) es doch hin. Mein Admin ist wohl überfordert.

Gruß
Marco
Biber
Biber 25.10.2005 um 10:16:24 Uhr
Goto Top
Moin Marco,

*kopfkratz*
..nö, versteh ich jetzt nicht wirklich...*grübel*..
...was geht denn da ab???
Sehe im Moment da keine Erklärung, die sich mir richtig doll aufdrängt...

Melde mich bei Geistesblitz..

Grüße
Biber

P.S. Sind es in allen drei Fällen unterschiedliche DHCP-Server?
Ist da vielleicht etwas dabei, dass die auffällig unterscheidet z.B. in der Formatierung
(ich denke da enthaltene Leerzeichen in der Mitte, die vielleicht falsch interpretiert werden können. Beispiel: "178.__5.111.123" oder so etwas)?
Schmidtke
Schmidtke 25.10.2005 um 13:03:50 Uhr
Goto Top
Hallo Biber,
ich bin gerade in meinem URLAUB face-wink (ja sowas gibt es) in die Filiale gefahren.
Dort habe ich nochmals geschaut und ausprobiert.

Zur Erläuterung: Alle Rechner sind mittels eines Switch an unseren Filialserver angebunden. Auf diesem läuft auch der DHCP. Somit hat unser Filialserver die IP-Adresse des DHCP 192.168.XXX.1 (die XXX sind das was sich von Filiale zu Filiale ändert).
Mein Laptop (LT) hat die Arbeitsgruppe (AG) =1, Die eine Workstation (WS) hat als AG auch 1. Die zweite WS hat als AG die 2. Alle Rechner sind mit XP Pro SP2 ausgestattet. Eine Domäne ist nicht vorhanden. AG des Filialservers ist 2.

So und nun zum Ergebnis des Test:

LT = Admin-Skript geht, gemini´s vbs geht nicht (Fehlermeldung=Der Netzwerkpfad wurde nicht gefunden), dein Batch regt sich auch nicht (Eingabeaufforderung bleibt >5min stehen, wurde dann von mir geschlossen).

WS1=Admin-Script geht, gemini´s Script geht, dein Batch siehe LT

WS2=Admin-Script geht, dein Batch geht, gemini´s Skript siehe LT

Ich kann mir das nicht erklären *mitdemkopfschütteln*

Hoffentlich hast Du noch einen GEISTESBLITZ oder vieleicht gemini. Mein Admin ist gerade auch im Urlaub face-sad. Aber ich glaube er wird mir da auch nicht bei helfen können.

Schönen Tag noch, und nicht soviele "anstrengende" User wie mich.

Marco
13100
13100 25.10.2005 um 15:44:31 Uhr
Goto Top
also ich hab mir dat jetz mal so halbwegs durchgelesen,
eine menge an impressionen aufgeschnappt, eine menge
an lösungsansätzen gesehen und auch ein paar erfolgs-
erlebnisse rausgehört. was ich nich mitbekommen habe,
is das problemchen jetz eigentlich gelöst, bzw. was
is eigentlich das problem? ne anständige problem-
beschreibung wer doch mal der hit, oder geht's nur mir so.
wieso wird eigentlich nich das script von deinem admin
verwendet, wenn es den funktioniert, oder hab ich mich
da verlesen.
Schmidtke
Schmidtke 25.10.2005 um 16:37:47 Uhr
Goto Top
Hallo,
das Problemchen bei dem Script meines Admin ist eigendlich nur, das ich die IP-Adresse des Servers (DHCP) selber eintragen muß.
Dies hätte ich gerne automatisiert.
Das Script von gemini funktioniert auf den Rechnern auch 100%. Nur auf meinem Laptop bekomme ich immer die Fehlermeldung "Netzlaufwerkpfad nicht gefunden".

Dies hätte ich gerne noch geklärt.

Marco
13100
13100 25.10.2005 um 16:46:36 Uhr
Goto Top
um wieviel verschiedene dhcp server geht es den
eigentlich?

sollte es sich dabei, um eine handvoll handeln, die
dann eh eigentlich immer die gleiche ip haben, würd
ich die einfach alle als standardgateway (wenn es
darum geht) eintragen.
Schmidtke
Schmidtke 25.10.2005 um 18:09:20 Uhr
Goto Top
@13100

Also,
ich bin im Außendienst tätig und bereise so ca. 110 Filialen. Jede Filiale hat einen eigenen Server der auch gleichzeitig als DHCP dient. D.h. die IP die ich bei dem Script meines Admin eintrage lt. immer 192.168.XXX.1 Das XXX steht für die entsprechende Filiale.
Das Script von gemini klappt auf den Workstations in der Filiale auch prima. Nur auf meinem Laptop nicht.
Ich könnte ja nun jedesmal wenn ich in einer Filiale bin die Verbindungen zu den drei Netzlaufwerken von "Hand" verbinden. Aber es müsste ja auch mit einem Script gehen.

Das Script von gemini liest die IP des DHCP-Servers aus, welche auch gleichzeitig die IP des Fileservers ist.

Nur wenn es dann an das Verbinden mit den Netzlaufwerken geht bekomme ich immer nur die o.g. Fehlermeldung.

mfg
Marco
13100
13100 25.10.2005 um 18:48:26 Uhr
Goto Top
ouch - stehe immer noch unter schock, man
möge mich in diesem thread ignorieren.
Schmidtke
Schmidtke 25.10.2005 um 19:53:36 Uhr
Goto Top
* SCHOCK *

Warum und wodurch ????

*ratsuchend*

mfg
Marco
13100
13100 25.10.2005 um 19:57:46 Uhr
Goto Top
liegt an anderen threads, gönne mir nun eine threadpause.
hat nix mit diesem zutun, is mir für heute nur einfach zu hoch.

wie gesagt, ignoriert mich in diesem thread.
gemini
gemini 25.10.2005 um 22:08:11 Uhr
Goto Top
@Biber
Die 3 Minuten Aufenthalt in HB haben leider nicht ausgereicht für nen Schmalzkuchen.
Was ist da eigentlich, sowas wie Ausgezogene? Na, egal ein Dickmacher jedenfalls.

@marco
War auch kurz im, dank Element of Crime, nun weltberühmten Delmenhorst.
Apropos, ich bin ganz gerne in Bayern.
Das ist da wo ihr alle hinkommen werdet wenn ihr mal in Rente seid face-wink
Ich hab mir mein Plätzchen am Chiemsee schon gesichert *grins*

Back to theme...
Das Script habe ich auf der Workstation im Geschäft geschrieben (und mein Chef hats bezahlt face-wink), da habe ich auch nur Benutzerrechte.

Es liegt auch nicht an der Arbeitsgruppe. Der DHCP ist ein Attribut der Netzwerkkarte.

Wird der Pfad gefunden, wenn du die vom Script ermittelte IP manuell einträgst?
Du kannst es debuggen indem du entweder
WScript.Echo <<a>Variable<a>>
oder
MsgBox <<a>Variable<a>>
an verschiedenen, sinnvollen Stellen einfügst.

Mal Resumieren:
Das Script deines Admin (Ich bin auch dafür, dass jetzt jeder seinen eigenen Admin bekommt face-wink) funktioniert?
Mein Script gibt den richtigen Wert zurück?
Es ist kein Tippfehler im Script?
Du hast die nötigen Rechte auf das Share?
Die Credentials passen?
Wenn alles JA, dann fällt mir momentan auch nichts mehr ein.
Außer dass es evtl. doch nicht der DHCP-Server ist, sondern der NTP-Server *lach*
Biber
Biber 25.10.2005 um 22:55:58 Uhr
Goto Top
@wb gemini
Schmalzkuchen ist so eine Sorte Fettgebackenes, die man/frau nur einmal im Jahr verträgt und dann auch nur mit Glühwein. So eine Art Mutprobe zum Freimarkt.

@marco
Dann bitte in meinem Batch auch noch drei Sachen zum Fehlerfinden:

Am Anfang eine Zeile dazu:
Set "Log=%temp%\MarcosLog.txt"
...
Vor dem "Net use * /d"... eine Zeile
Echo %time% [%IP%]>>%log%
...
und in den "Net use.."-Zeilen jeweils das ">nul" durch ein ">>%log%" ersetzen.

Dann haben wir eine MarcosLog.txt, wo wir etwas sehen können.

unddannmachenwirdiesenThreadirgendwannendlichzuheuuuuuuuuuuul
Schmidtke
Schmidtke 26.10.2005 um 10:58:25 Uhr
Goto Top
@gemini
Und wie gefällt Dir Delmenhorst? Ist es nicht "herrlich" face-wink

Mal Resumieren:
Dein Script gibt den richtigen Wert zurück.
Es ist kein Tipfehler in dem Script, da ich ein und die selbe Datei benutzt habe.
Auf die drei Netzlaufwerke kann ich zugreifen und habe auch die Rechte.
*Die Credentials passen?* face-sad Jetzt müsste ich nur noch wissen was das ist face-sad

@Biber
Ich habe noch bis Donnerstag Urlaub face-smile face-smile
Am Freitag werde ich deinen Vorschlag ausprobieren, da ich dann wieder in eine Filiale komme. Das LOG werde ich dann hier posten.

Gruß
Marco
gemini
gemini 26.10.2005 um 12:22:34 Uhr
Goto Top
Delmenhorst, *räusper* ich hab ja nur den Bahnhof gesehen.


*Die Credentials passen?* face-sad Jetzt müsste ich nur noch wissen was das ist
Deine Anmeldedaten; Benutzername und Passwort
Biber
Biber 26.10.2005 um 14:10:23 Uhr
Goto Top
@gemini
>Delmenhorst, *räusper* ich hab ja nur den Bahnhof gesehen.
Außer dem Bahnhof gibt es da noch zwei Telefonzellen und einen Schlecker-Markt

@marco
Falls ihr bei Euch eine Kaffeemaschine hast, zu der Du die Credentials besorgen kannst, kann ich auch mal kurz zu Dir rüberbrackern nach DEL.
Wollte mir die Straße der Verdammnis ja ohnehin mal irgendwann angucken...

Biber
Schmidtke
Schmidtke 26.10.2005 um 14:42:59 Uhr
Goto Top
@gemini
Und eine Fr. Connor. Die ist auch aus Delmenhorst. Und es gibt auch mehr als zwei Telefonzellen face-smile

@Biber
Kaffee werde ich ordern. Mußt mir nur Bescheid geben, wenn du die unsägliche Geschichte mal in Augenschein nehmen willst.

mfg
Marco
Schmidtke
Schmidtke 26.10.2005 um 16:22:57 Uhr
Goto Top
@gemini
Ich hab es im Urlaub nicht ausgehalten und bin nochmal in die Filiale gefahren. In deinem Script habe ich nun die Variable "strServerIP" entfernt und die korrekte IP eingetragen.

WshNetwork.MapNetworkDrive "I:", "\\192.168.26.1\QDLS", , strUser, strPass
WshNetwork.MapNetworkDrive "S:", "\\192.168.26.1\SOFTWARE", , strUser, strPass
WshNetwork.MapNetworkDrive "O:", "\\192.168.26.1\OFFICE", , strUser, strPass

Und was soll ich sagen, nun hat das mit dem Verbinden geklappt. Sollte es evtl. möglich sein, das ich die Variable nicht speichern kann? kopfkratz
Wenn ich an der Eingabeaufforderung "set strServerIP" eingebe sagt es mir das die Umgebungsvariable nicht definiert ist.
Liegt es daran ???? mitdemkopfaufdentischschlagen

@Biber
Habe deine Änderungen durchgeführt. In dem LOG steht nun:

16:16:24,33 [192.168.26.1]
Sie verfgen ber folgendene Remoteverbindungen:
Q: \\FilePW1\Daten
Fortsetzen beendet die Verbindungen.
M?chten Sie diesen Vorgang fortsetzen? (J/N) [N]: Der Befehl wurde erfolgreich ausgefhrt.
Der Befehl wurde erfolgreich ausgefhrt.
Der Befehl wurde erfolgreich ausgefhrt.

Dabei habe ich festgestellt, das ich in dem leeren Eingabefenster nur "J" drücken muß. Dann werden die Laufwerke verbunden. Aber warum kann ich das nicht sehen, das ich "J" drücken muß? kopfschüttel
Das Fenster ist absulut leer.

mfg
Marco
gemini
gemini 26.10.2005 um 17:52:38 Uhr
Goto Top
Ich hab es im Urlaub nicht ausgehalten und bin nochmal in die Filiale gefahren.
So mag ich das, wenn die Leute Einsatz zeigen face-wink

In deinem Script habe ich nun die Variable "strServerIP" entfernt und die
korrekte IP eingetragen.
Und was soll ich sagen, nun hat das mit dem Verbinden geklappt. Sollte es evtl.
möglich sein, das ich die Variable nicht speichern kann? kopfkratz
Du brauchst die Variable nicht zu speichern, der Wert ist in der Variablen gespeichert.
strServerIP enthält in deinem Beispiel den Wert 192.168.26.1. Wenn du, nachdem die Variable gefüllt wurde, MsgBox strServerIP eingibst und das Script startest, öffnet sich ein Fenster in dem 192.168.26.1 steht.
In einem String kannst du die Variable stellvertretend für den Wert einsetzen, den sie enthält.
In dem Beispiel entspricht
WshNetwork.MapNetworkDrive "I:", "\\" & strServerIP & "\QDLS", , strUser, strPass  
dem ausgeführten Code
WshNetwork.MapNetworkDrive "I:", "\\192.168.26.1\QDLS", , <<a>DeinBenutzername<a>>, <<a>DeinPasswort<a>>  

Wenn ich an der Eingabeaufforderung "set strServerIP" eingebe sagt es
mir das die Umgebungsvariable nicht definiert ist.
Liegt es daran ???? mitdemkopfaufdentischschlagen
Nein,
set
gibt die Umgebungsvariablen des lokalen Computers aus und
set strServerIP
eben alle, die mit strServerIP beginnen. Davon wird es nicht allzuviele geben.
Biber
Biber 26.10.2005 um 17:57:56 Uhr
Goto Top
@marco
*wummerwummerwummermitdemKopfandieWand*

Okay... jetzt haben wir es gleich...

Das Problem ist sooooooo banal, dass ich es auch verratzt habe.
Also - bevor ich in dem Batch die Netzlaufwerke verbinde, trenne ich ja die eventuell bestehenden Laufwerkszuordnungen mit "net use * /d" . Eher aus Angewohnheit - normalerweise sollten nie welche vorhanden sein.
Es sei denn, irgendeine Pappnase hätte irgendwann mal die Netzwerklaufwerke verbunden mit der Klicki-Bunti-Option "Verbindung bei Start wiederherstellen" bzw den "net use"-Befehl mit der Option "/Persistent" (dauerhaft) aufgerufen.
Was natürlich totaler Unsinn wäre in genau Deinem Fall mit immer anderen Verbindungen.
Wenn nun tatsächlich schon -wider Erwarten- Netzwerkverbindungen bestehen, fragt das *zensiert* Windows nach, ob Du auch meinst, was Du tippst (Windows und sein Anwender misstrauen sich ständig gegenseitig).
Und diese Sicherheitsabfrage habe ich Dir geschickterweise umgeleitet ins Nirwana bzw. in die Logdatei "**Möchten Sie diesen Vorgang fortsetzen? (J/N) [N]:"....
Wenn Du also einfach "Enter" gedrückt hast, galt das als "N"... Vorgang nicht fortsetzen.
Netzlaufwerke wurden nicht getrennt. Folgefehler: Laufwerk I:. O:. S: konnten "nicht erneut verbunden werden".

Abhilfe (auch wenns wieder mal undokumentiert ist - M$ mal <s>den Mittelfinger zeigt</s> die Zunge rausstreckt) :
Entweder einmalig an diesen Rechnern am CMD-Prompt eingeben:
Net use /P:NO .......(nie wieder persistent *gg)
oder den Schalter "/Y " anhängen an die Net-Use-Delete-Anweisung:
Net Use * /d /y >nul 2>&1 .........Thats All

Damit sollte zumindest die *.Bat-Variante laufen. Das entspricht dem Parameter "blnForce" in geminis Geraffel: "WshNetwork.RemoveNetworkDrive colDrives(i), blnForce "

Die andere Frage:
Mit "Set strServerIP" vom CMD-Prompt kannst Du auch nichts sehen, das ist ok. Die wird nur lokal, in einem anderen Scope...ach was, egal...ist in Ordnung so!

Mach doch bitte in geminis Script eine Zeile vor dem Lw-verbinden ein "WScript.Echo strServerIP".
Das bekommen wir auch zum Fliegen.

Wettet ganz optimistisch

Biber
P.S. Wegen Kaffee und/oder Connor komm ich trotzdem mal.
[Edit] @gemini
Da haben wir wohl parallel getippt... hoffentlich nichts widersprüchliches face-wink
[/Edit]
Schmidtke
Schmidtke 26.10.2005 um 18:51:31 Uhr
Goto Top
Und wie kommt es dann, das wenn ich die IP eintrage verbunden werde, aber mit der Variablen nicht???

*ziemlichblödausderwäscheschauend*

Marco
gemini
gemini 26.10.2005 um 19:12:24 Uhr
Goto Top
Das weiß ich nicht *achselzuck*
Bei mir funktioniert das Script, trennt die Laufwerke und verbindet sie neu.
Ich hab auch schon mehr Variablen in Scripten eingesetzt und es funktioniert eigentlich immer. Abgesehen von den Fällen, wo ich halt mal Tippfehler reinhaue.

Füge mal diese Zeile ein, bevor die Laufwerke verbunden werden
MsgBox "\\" & strServerIP & "\QDLS"  
Die MessageBox müsste \\192.168.26.1\QDLS ausgeben.

Außerdem stelle ich mir grad die Frage, welche Fehlermeldung jetzt kommt?
Immer noch der fehlende Netzwerkpfad oder gibts Abwechslung?

Du kannst auch nach jedem Mapping eine Zeile einfügen
MsgBox Err.Number & " " & Err.Description  

Gruß
gemini
(der jetzt langsam graue Haare bekommt face-wink)
Biber
Biber 26.10.2005 um 20:06:25 Uhr
Goto Top
@marco
...ist mir jetzt auch schon egal, ob Du nun hier 17 oder 18 Seiten rausbekommst, wenn Du diesen Thread für Deinen Admin ausdruckst.. face-big-smile

Also, was mir (wieder zu spät) ins Auge gesprungen ist bei Deiner Log-Datei:

Da gibt es ja offensichtlich noch ein Laufwerk Q:
Sie verfgen ber folgendene Remoteverbindungen:
Q: \\FilePW1\Daten

...welches mein Bätchelchen und geminis Skript auch einfach trennen und nicht wiederherstellen.
Also machen wir es doch gleich ganz sauber (und mit Logdateiface-smile
::-----snipp MarcosLonOn.Bat  --- Version 0.33
@echo off & setlocal 
Set "Log=%temp%\MarcosLog.txt"  
Set "Marco=MarcosUsername" & set "pw=MarcosPassword"   
for /F "tokens=2 delims=:" %%i in ('ipconfig /all ^|find "DHCP-Server"') do set "IP=%%i"   
set "IP=%IP: =%" || REM Leerzeichen entfernen  
Set "Errtext=Laufwerk konnte nicht verbunden werden! IP:%IP% am %date%"   
For %%i in ( I O S ) do Net use %%i: /d /y>>"%Log%" 2>&1   
(Net use I: \\%IP%\QDLS /USER:%Marco% %pw%>>"%Log%" 2>&1)|| echo %Time% Das I:-%ErrText%>>"%Log%"  
(Net use O: \\%IP%\Software /USER:%Marco% %pw% >>"%Log%" 2>&1)|| echo %Time% Das O:-%ErrText%>>"%Log%"   
(Net use S: \\%IP%\Office /USER:%Marco% %pw% >>"%Log%" 2>&1) || echo %Time% Das S:-%ErrText%>>"%Log%"  
::-----snapp MarcosLonOn.Bat  --- Version 0.33 

Disclaimer: Alle voran gegangenen Versionen verlieren hiermit ihre Gültigkeit.
Der Ablauf des Mindesthaltbarkeitsdauer bleibt davon unberührt. face-wink

Biber
P.S. So lange Bätche schreib ich sonst nie zum Laufwerksverbinden... *grummelt*
gemini
gemini 26.10.2005 um 20:34:10 Uhr
Goto Top
Ich verzichte hiermit ausdrücklich auf mein aus den Art. GG 2(1) und 5(1) ableitbares Recht einer weiteren Version mit im IE ausgegebenen Report und ausführlichen Einträgen im Anwendungs-Log.

Allerdings würde mich die Meinung von Marco's Admin zu unseren Ergüssen schon interessieren face-wink
Schmidtke
Schmidtke 27.10.2005 um 16:39:14 Uhr
Goto Top
Hallo Gemini,
bin mal wieder in der Firma *fraudrehtmirbalddenhalsum*

Habe dein Script lt. Anleitung umgestrickt. Folgendes hat sich dabei ergeben.

Wenn ich direkt hinter der Zeile
-- strServerIP = objAdapter.DHCPServer--
eine Box einfüge mit
--MsgBox strServerIP--
zeigt mir die Box die korrekte IP an.

Wenn ich nun
--MsgBox "\\" & strServerIP & "\QDLS--
eintrage bevor die Laufwerke mit
--WshNetwork.MapNetworkDrive "I:", "\\" & strServerIP & "\QDLS", , strUser, strPass--
verbunden werden sollen zeigt mir die Box nur
--\\\QDSL--
an. Danach kommt dann wieder die Fehlermeldung:
--Zeile 40, Zeichen 1, Der Netzwerkpfad wurde nicht gefunden, Code 80070035--

Da fällt mir noch ein, weil es bei biber sein Batch so war, es ist jedesmal noch ein Laufwerk Q vorhanden. Dies hat mein Admin wohl so eingestellt, das es sich automatisch verbindet. Ist auch nicht so tragisch, da das ein Netzlaufwerk auf unserem Zentralrechner ist, wo die Adresse immer gleich ist.

mfg
Marco
Schmidtke
Schmidtke 27.10.2005 um 16:42:31 Uhr
Goto Top
lächelndundfreuendindiehändeklaschend

face-smile face-smile100%tig. Nun geht es einwandfrei.face-smile face-smile

Wenn wir nun auch das Script noch hinbekommen bin ich der "glücklichste" Mensch auf Erden.

mfg
Marco

P.S. Das Kaffeeangebot steht trotzdem
Biber
Biber 27.10.2005 um 17:03:23 Uhr
Goto Top
@marco
*puuuuuuuuuuh *Schweißabwisch*
Wenn wir nun auch das Script noch hinbekommen ..
<s>Wenn</s> Sobald wir nun auch das Script noch hinbekommen ...
bin ich der "glücklichste" Mensch auf Erden.
Ja, gemini hat auch schon was von Ergüssen geschrieben. Ich hab aber lieber nicht nachgefragt.

Da kann eigentlich nur noch ein Leerzeichen zuviel im Rückgabewert von "objAdapter.DHCPServer" sein oder so ein Unsinn...
Hast Du da mal ein 'WScript.Echo "[" & strServerIP & "]" ' oder so was eingebaut?

Was wir Biber nicht alles für eine Tasse Kaffee auf uns nehmen... *zumHimmelaufschaut
gemini
gemini 27.10.2005 um 18:22:36 Uhr
Goto Top
Hallo Marco,
ist dieser Block in deinem Script enthalten?
For Each objAdapter in colAdapters 
If Not IsNull(objAdapter.DefaultIPGateway) Then 
For i = 0 To UBound(objAdapter.DefaultIPGateway) 
strServerIP = objAdapter.DefaultIPGateway(i) 
Next 
End If 
Next
Das wäre wichtig, weil sonst ALLE Adapter ausgelesen werden und die Variable jeweils überschrieben wird.
Wenn ich die Not IsNull-Abfrage rausnehme, erhalte ich auch einen Leerstring zurück.

Ein Problem könnte noch sein, wenn du einen weiteren aktiven Adapter hast, bspw. eine WLAN-Karte. Aber darüber will ich mir jetzt momentan (noch) nicht den Kopf zerbrechen face-wink

gemini
Schmidtke
Schmidtke 28.10.2005 um 09:16:01 Uhr
Goto Top
Hallo Gemini,
nein dieses ist in dem Script nicht enthalten. Außerdem wollte ich ja nicht die Standardgatway-Adresse sondern die des DHCP. Wenn ich es so wie du geschrieben hast einfüge und dann das StandardGateway durch DHCPServer ersetze, bekomme ich immer eine Unverträglichkeitsmeldung wegen einem UBound *achselzuckendnichtverstehen*

Zur Info.
Meine eingebaute W-Lankarte ist deaktiviert. Mein Admin will sie nicht freigeben (Noch nicht).
Dann habe ich außerdem noch eine Fritz ISDN-Karte die als LAN2 erscheint (Kein DHCP).
Und natürlich die eigendliche Netzwerkkarte.

Hoffe die Angaben bringen uns (
*DICH***) weiter.

mfg
Marco
Schmidtke
Schmidtke 28.10.2005 um 09:22:53 Uhr
Goto Top
Hallo Biber,
gemini hat, glaube und hoffe ich mal, die Lösung schon vor Augen. Evtl. liegt das an meinen Netzwerkadaptern die vorhanden sind. W_Lan (zwar deaktiviert, aber wer weiß), normale Nerzwerkkarte und eine Fritzkarte die sich als LAN2 zeigt.

zumhimmelbetend

Meinem Admin zeige ich dieses Thraed aber wohl lieber nicht. Er mag es nicht wenn man versucht sich selber zuhelfen.

ehrverletzend


Marco
gemini
gemini 28.10.2005 um 20:57:38 Uhr
Goto Top
Hi Marco,

bei diesen verworrenen Thread bin ich ins falsche Posting gekommen, Sorry.

UBound gibt den oberen Grenzwert eines Arrays zurück.
Dim arrTest(100)
Ubound(arrTest) gibt 100 zurück

Ersetze mal die entspr. Passage damit und schau was passiert:
' DHCP ermitteln
For Each objAdapter in colAdapters
If objAdapter.DHCPEnabled = True Then
strServerIP = objAdapter.DHCPServer
End If
Next

Ich gehe jetzt davon aus, dass nur auf einem Adapter DHCP aktiv ist.
Falls eine weitere NIC aktiviert wird, könnte man das ganze auch noch an der MAC evtl. auch am Adaptertyp festmachen.
Ich hoffe jedoch, dass dieser Krug an mir vorübergeht face-wink

~~~~~~~
gemini hat, glaube und hoffe ich mal, die Lösung schon vor Augen.
Mir wird gleich schwarz vor Augen!!

Meinem Admin zeige ich dieses Thraed aber wohl lieber nicht. Er mag es nicht wenn man versucht sich selber zuhelfen. ehrverletzend
Trotzdem schönen Gruß an deinen Admin und eine Empfehlung
http://www.amazon.de/exec/obidos/ASIN/3827321964/qid%3D1130524329/028-1 ...
Gut 1200 Seiten zum Unters-Kopfkissen-legen.

HTH
gemini

PS: Das Fehlerhandling übergebe ich hiermit vertrauensvoll in die Hände deines Admin.
Tipp: Wenn objAdapter.DHCPEnabled = FALSE sollte die weitere Verarbeitung abgebrochen, also keine Mappings versucht werden, das Popup mit einer entspr. Meldung aber trotzdem gestartet werden.
Biber
Biber 28.10.2005 um 21:56:29 Uhr
Goto Top
@gemini
Das sollte es nun aber auch gewesen sein (bete ich!)...
Nach diesem Thread glaube ich auch tatsächlich, dass sich zu dem Thema WScripting die von Dir empfohlenen 1200 Seiten zusammenschreiben lassen.
(Ich habe mich aber dann doch für den "Halbblutprinzen" von der gleichen Site entschieden.)

Eigentlich sollten wir diesen Thread mittels QuickSort oder BubbleSort wieder in eine lesbare Form sortieren lassen. Könnte ich ja mit einem Batch-Oneliner versuchen, aber eigentlich wäre das doch eher prädestiniert für ein kleines VBSkriptchen...
schwarzenPeterwegschieb face-wink

Wünsche Dir und Marco ein DHCP-Serverfreies Wochenende
Biber
Schmidtke
Schmidtke 31.10.2005 um 09:38:25 Uhr
Goto Top
@gemini
*zurdiraufschauendundsichgleichzeitigverneigen*

Was soll ich sagen. Das war der Fehler. Nun haut es 100%tig hin und wir können diesen Thread schließen.

*tausenddank*

Werde dich immer weiterempfehlen face-wink

@Biber
auch Dir herzlichen Dank für deine freundliche Unterstützung.

*auchhierverneigeichmicheinhundertmal*

Marco

P.S.
@Biber
@gemini

Das Kaffeeangebot steht natürlich weiterhin, auch wenn es für einen face-wink Bayern face-wink wahrscheinlich schwerer ist, dies anzunehmen.

Eine letzte Frage hätte ich dann trotzdem noch.
Wie kann ich dieses Thread schließen bzw. ordnen und die Bewertung auf "voll" stellen?
Biber
Biber 31.10.2005 um 10:10:02 Uhr
Goto Top
Moin Marco,

na, schöner konnte ja mein Montagmorgen kaum beginnen...*strahl*
Sollten wir es endlich geschafft haben?

Freue mich jedenfalls wirklich mit... face-wink

Eine letzte Frage hätte ich dann trotzdem noch.
Wie kann ich dieses Thread schließen...
Die Funktion ist noch in Entwicklung. Also lass es so. Oder setze ein "~geloest~" an den Beginn des Titels.
...bzw. ordnen ...
Macht gemini via BubbleSort in VBSkript.
....und die Bewertung auf "voll" stellen?
Kannst Du nicht und ist auch nicht nötig.
Reicht gemini und mir vollkommen, wenn unsere Skripte auch unter widrigen Umständen laufen.

Weiterhin schönen Montag und spätestens bis zum Kaffee in DEL.

Frank / der Biber aus Bremen
gemini
gemini 31.10.2005 um 11:57:31 Uhr
Goto Top
Moin Marco,

na, schöner konnte ja mein Montagmorgen kaum beginnen...*strahl*
Sollten wir es endlich geschafft haben?
dito

Freue mich jedenfalls wirklich mit... face-wink
Me too!
Wie sagte schon der große Hannibal Smith: "I just love it when a plan comes together!"

>>...bzw. ordnen ...
Macht gemini via BubbleSort in VBSkript.
Falsch, Biber dachte gemini würde das machen.
Ein kleiner aber gravierender Unterschied.

Reicht gemini und mir vollkommen, wenn
unsere Skripte auch unter widrigen Umständen laufen.
Ja klar, ich leb von Lust, Liebe und Spaghetti-Code face-wink

Das Kaffeeangebot steht natürlich weiterhin, auch wenn es für einen
Bayern wahrscheinlich schwerer ist, dies anzunehmen.
Der Bayer freut sich auf einen schönen Feiertag morgen.
So richtig mit ausschlafen, gemütlich frühstücken und den ganzen Tag nix tun face-big-smile

Schöne Woche
gemini