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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 18101
Url: https://administrator.de/contentid/18101
Ausgedruckt am: 26.11.2024 um 09:11 Uhr
73 Kommentare
Neuester Kommentar
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 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
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
Wenn du die Konstante mit der Vaiablen belegst (oder die Variable direkt angibst) wird immer der richtige Server gefunden.
Const server = %LOGONSERVER%
Gruß
gemini
Hi Marco,
Bei set werden dir nämlich alle Umgebungsvariablen angezeigt.
Aber egal, ohne Domäne ist das sowieso irrelevant weil %LOGONSERVER% dann dein Laptop ist.
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
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.SET=LOGONSERVER angebe, wird mein Notebook
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.Server läuft.
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
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
' ~~~~~~~~~~~~~~~~~~~
' ~~~~~~~~~~~~~~~~~~~
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
' ~~~~~~~~~~~~~~~~~~~
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:
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
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
@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]
>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]
Nun, vielleicht ist das Laufwerk ja bereits verbunden?
Füge einfach nach On Error eine Zeile mit ein.
Diese zeigt die IP an, die nach Eingabe von ipconfig -all als Standardgateway zurückgegeben wird.
Zum testen kannst du nach jedem Mapping
ausführen.
Ich würde sowieso alle Mappings trennen und dann neu verbinden. Zum Beispiel so:
Füge einfach nach On Error eine Zeile mit
MsgBox server
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
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
@Biber
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.
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.
@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
Grüße
Biber
>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
Grüße
Biber
@Biber
@marco
So, nach Feierabend hab ich mehr Zeit
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 ###
Das wiederum hatte ich verstanden
Na, dann bin ich ja beruhigt @marco
So, nach Feierabend hab ich mehr Zeit
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 ###
@gemini
... ich muss hier ja nicht alles sofort verstehen...sind ja genug Kompetente da, die es mir geduldigst erklären...
Aber a propos "nicht verstehen":
Warum nennt ihr VB-Skripter denn eine Stringvariable "numSec2Wait"??? *lacht
...nein...nicht antworten jetzt... war nur Spaß...
...im Gegenzug verzichte ich darauf, Marco ein komplettes Anmeldescript als Batchvariante zu posten...
Schönen Feierabend!
... ich muss hier ja nicht alles sofort verstehen...sind ja genug Kompetente da, die es mir geduldigst erklären...
Aber a propos "nicht verstehen":
Warum nennt ihr VB-Skripter denn eine Stringvariable "numSec2Wait"??? *lacht
...nein...nicht antworten jetzt... war nur Spaß...
...im Gegenzug verzichte ich darauf, Marco ein komplettes Anmeldescript als Batchvariante zu posten...
Schönen Feierabend!
@Biber
Außerdem, das waren nicht DIE VB-Scripter sondern nur ich.
Oder machen das alle so, dann wärs ja wieder normal.
Warum nennt ihr VB-Skripter denn eine Stringvariable
"numSec2Wait"???
Erbsenzähler!! "numSec2Wait"???
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ß...
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
@gemini
*kopfschüttel.. dass diese dickköpfigen Bayern immer das letzte Wort haben müssen...
..aber mit Dir chatte ich trotzdem am liebsten..
@marco
Kleb Deinem Admin geminis Skript und meinen Fünfzeiler auf den Monitor.
*Winks in den Süden
Biber
*kopfschüttel.. dass diese dickköpfigen Bayern immer das letzte Wort haben müssen...
..aber mit Dir chatte ich trotzdem am liebsten..
@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
Biber
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
die Zeile
ein.
Die MessageBox müsste die IP des Gateways in der Form aaa.bbb.ccc.ddd ausgeben.
Nach jedem
eine weitere MessageBox
Nun bekommst du den 'echten' Fehler zurückgeliefert
Es hat sowohl die richtige Gateway-IP zurückgeliefert als auch die Laufwerke richtig verbunden.
Füge mal nach
strServerIP = objAdapter.DefaultIPGateway(i)
MsgBox strServerIP
Die MessageBox müsste die IP des Gateways in der Form aaa.bbb.ccc.ddd ausgeben.
Nach jedem
WshNetwork.MapNetworkDrive...
MsgBox Err.Number & " " & Err.Description
*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"
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"
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:
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... ....IP-Addr)".
~~~
In geminis Skript kannst Du entsprechend:
setzen.
Aber wie nun der DHCP-Server bei den VB-Skriptern heißt??? *grübel... Weiß nur gemini...
Wahrscheinlich numDHCPServer
Also warte da lieber auf gemini. Denn ich denke, Dein Admin weiß das bestimmt nicht.
Grüße
Biber
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... ....IP-Addr)".
~~~
In geminis Skript kannst Du entsprechend:
...
strUserName = "MarcosUsername"
strPassword = "MarcosPasswort"
...
WshNetwork.MapNetworkDrive "O:", "\\" & strServerIP & "\OFFICE", blnNoPersist , strUsername, strPassword
....
Aber wie nun der DHCP-Server bei den VB-Skriptern heißt??? *grübel... Weiß nur gemini...
Wahrscheinlich numDHCPServer
Also warte da lieber auf gemini. Denn ich denke, Dein Admin weiß das bestimmt nicht.
Grüße
Biber
*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:
So, und aus erzieherischen Gründen sortierst du mal am Wochenende den Thread durch und machst ein halbseitiges Tutorial draus...
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]
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...
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]
@marco
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
Schönes Wochenende
Biber
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
Schönes Wochenende
Biber
@gemini
Falls Du über Bremen fährst, spendier ich Dir ein paar Schmalzkuchen auf dem Freimarkt
Aber auch andernfalls ein Schönes Wochenende!
Falls Du über Bremen fährst, spendier ich Dir ein paar Schmalzkuchen auf dem Freimarkt
Aber auch andernfalls ein Schönes Wochenende!
Aber wie nun der DHCP-Server bei den VB-Skriptern heißt??? *grübel...
Weiß nur gemini...
Wahrscheinlich numDHCPServer
Falsch Biber, DHCP-Server werden IMMER als Bool'sche-Werte angegeben.Weiß nur gemini...
Wahrscheinlich numDHCPServer
Entweder ist einer da, dann ist blnDHCPServer = TRUE oder eben nicht, dann halt FALSE
In diesem Sinne
Have a good time!
@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.
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.
@Biber
@marco
So ein Schlag gegen den Kopf bewirkt oftmals positives
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
' ##########################
' 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 ###
Verpass bloß nicht Urlaub und Fähre wegen dieses Threads.
Nach WHV brauchts noch keine Fähre, es sei denn das Meer gewinnt Land @marco
So ein Schlag gegen den Kopf bewirkt oftmals positives
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
' ##########################
' 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 ###
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
Und auf diese beiden Behauptungen gehe ich keinem Wort ein:
> .. ich lasse das mit dem Skript sein. Der Admin hat wohl doch recht.
Schönes Rest-WE
Biber
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
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... Schönes Rest-WE
Biber
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)?
*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)?
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.
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.
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.
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.
ouch - stehe immer noch unter schock, man
möge mich in diesem thread ignorieren.
möge mich in diesem thread ignorieren.
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.
hat nix mit diesem zutun, is mir für heute nur einfach zu hoch.
wie gesagt, ignoriert mich in diesem thread.
@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
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 ), 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 oder an verschiedenen, sinnvollen Stellen einfügst.
Mal Resumieren:
Das Script deines Admin (Ich bin auch dafür, dass jetzt jeder seinen eigenen Admin bekommt ) 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*
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
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 ), 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>>
MsgBox <<a>Variable<a>>
Mal Resumieren:
Das Script deines Admin (Ich bin auch dafür, dass jetzt jeder seinen eigenen Admin bekommt ) 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*
@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
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
@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
>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
Ich hab es im Urlaub nicht ausgehalten und bin nochmal in die Filiale gefahren.
So mag ich das, wenn die Leute Einsatz zeigen 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.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
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
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, mir das die Umgebungsvariable nicht definiert ist.
Liegt es daran ???? mitdemkopfaufdentischschlagen
set
set strServerIP
@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
[/Edit]
*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
[/Edit]
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
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
Gruß
gemini
(der jetzt langsam graue Haare bekommt )
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"
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 )
@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..
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 verfgen 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 Logdatei
Disclaimer: Alle voran gegangenen Versionen verlieren hiermit ihre Gültigkeit.
Der Ablauf des Mindesthaltbarkeitsdauer bleibt davon unberührt.
Biber
P.S. So lange Bätche schreib ich sonst nie zum Laufwerksverbinden... *grummelt*
...ist mir jetzt auch schon egal, ob Du nun hier 17 oder 18 Seiten rausbekommst, wenn Du diesen Thread für Deinen Admin ausdruckst..
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 verfgen 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 Logdatei
::-----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.
Biber
P.S. So lange Bätche schreib ich sonst nie zum Laufwerksverbinden... *grummelt*
@marco
*puuuuuuuuuuh *Schweißabwisch*
<s>Wenn</s> Sobald wir nun auch das Script noch hinbekommen ...
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
*puuuuuuuuuuh *Schweißabwisch*
Wenn wir nun auch das Script noch hinbekommen ..
bin ich der "glücklichste" Mensch auf Erden.
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
Hallo Marco,
ist dieser Block in deinem Script enthalten?
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
gemini
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
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
gemini
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
~~~~~~~
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.
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
~~~~~~~
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 Empfehlunghttp://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.
@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
Wünsche Dir und Marco ein DHCP-Serverfreies Wochenende
Biber
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
Wünsche Dir und Marco ein DHCP-Serverfreies Wochenende
Biber
Moin Marco,
na, schöner konnte ja mein Montagmorgen kaum beginnen...*strahl*
Sollten wir es endlich geschafft haben?
Freue mich jedenfalls wirklich mit...
Die Funktion ist noch in Entwicklung. Also lass es so. Oder setze ein "~geloest~" an den Beginn des Titels.
Macht gemini via BubbleSort in VBSkript.
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
na, schöner konnte ja mein Montagmorgen kaum beginnen...*strahl*
Sollten wir es endlich geschafft haben?
Freue mich jedenfalls wirklich mit...
Eine letzte Frage hätte ich dann trotzdem noch.
Wie kann ich dieses Thread schließen...
Wie kann ich dieses Thread schließen...
...bzw. ordnen ...
....und die Bewertung auf "voll" stellen?
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
Moin Marco,
Wie sagte schon der große Hannibal Smith: "I just love it when a plan comes together!"
Ein kleiner aber gravierender Unterschied.
So richtig mit ausschlafen, gemütlich frühstücken und den ganzen Tag nix tun
Schöne Woche
gemini
na, schöner konnte ja mein Montagmorgen kaum beginnen...*strahl*
Sollten wir es endlich geschafft haben?
ditoSollten wir es endlich geschafft haben?
Freue mich jedenfalls wirklich mit...
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.Macht gemini via BubbleSort in VBSkript.
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 unsere Skripte auch unter widrigen Umständen laufen.
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.Bayern wahrscheinlich schwerer ist, dies anzunehmen.
So richtig mit ausschlafen, gemütlich frühstücken und den ganzen Tag nix tun
Schöne Woche
gemini