Frage zu Anmeldeskript
Hi
ich verbinde in einem Anmeldeskript Netzlaufwerke, die dann z.B. Programme an Servername heißen. Ich möchte jetzt, dass Diese Laufwerk aber nur Programme heißt. Kann ich den Namen des Laufwerks im Skript irgendwie mitgeben?
Vielen Dank im Voraus
ich verbinde in einem Anmeldeskript Netzlaufwerke, die dann z.B. Programme an Servername heißen. Ich möchte jetzt, dass Diese Laufwerk aber nur Programme heißt. Kann ich den Namen des Laufwerks im Skript irgendwie mitgeben?
Vielen Dank im Voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 10746
Url: https://administrator.de/forum/frage-zu-anmeldeskript-10746.html
Ausgedruckt am: 23.12.2024 um 18:12 Uhr
31 Kommentare
Neuester Kommentar
From a Newsgroup post http://www.mcseboard.de/showthread.php?threadid=22357
Vielleicht hilft dir das.
"Schau mal in der Registry unter [HKEY_Current_User\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2]
...
Also erstellst Du mal auf Deinem Rechner ein solches Netzwerklaufwerk und benennst es so, wie Du es haben willst. Dann ab in die Registry und den Key exportieren. Anschließend kannst Du ihn per Logon-Script einfach auf jeder Workstation importieren.
...
Hmm, setzt Dich mal zu so einer Maschine, verbind das Netzlaufwerk und benenne es im Explorer um. Dann suchst Du dir nochmal den Registry-Key raus und exportierst ihn. Anschließend löscht Du den Key aus der Registry, verbindest das Laufwerk neu und machst einen Doppelklick auf den exportierten Key..."
Vielleicht hilft dir das.
"Schau mal in der Registry unter [HKEY_Current_User\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2]
...
Also erstellst Du mal auf Deinem Rechner ein solches Netzwerklaufwerk und benennst es so, wie Du es haben willst. Dann ab in die Registry und den Key exportieren. Anschließend kannst Du ihn per Logon-Script einfach auf jeder Workstation importieren.
...
Hmm, setzt Dich mal zu so einer Maschine, verbind das Netzlaufwerk und benenne es im Explorer um. Dann suchst Du dir nochmal den Registry-Key raus und exportierst ihn. Anschließend löscht Du den Key aus der Registry, verbindest das Laufwerk neu und machst einen Doppelklick auf den exportierten Key..."
@echo off
net use M: /d /y
net use S: /d /y
net use F: /d /y
net use H: /d /y
net use M: \\edv-f1.de\DFS\Musik /persistent:no
net use S: \\edv-f1.de\DFS\Software /persistent:no
net use F: \\w2k3srv02\e$\Download /persistent:no
net use H: \\edv-f1.de\DFS\Basisverzeichniss\%username%
Das löscht erstmal alle Verbindungen und baut sie neu auf.
Evtl. geht auch eine Abfrage auf die Laufwerksbuchstaben
If Not Exist M: (
net use M: \\edv-f1.de\DFS\Musik /persistent:no
)
Ob das funktioniert kann ich nicht sagen, normalerweise wird mit Exist das Vorhandensein von Dateien abgefragt.
' NameDrive.vbs
' VBScript to map a network drive.
' Authors Guy Thomas and Barry Maybury
' Version 1.3 - January 23rd 2005
' ----------------------------------------'
'
Option Explicit
Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName
'
strDriveLetter = "Y:"
strRemotePath = "\\alan\home"
strNewName = "GuyDives"
' Section to map the network drive
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
' Section which actually (re)names the Mapped Drive
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName
Wscript.Echo "Check : "& strDriveLetter & " for " & strNewName
WScript.Quit
' End of script
Option Explicit
Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName
strDriveLetter = "P:"
strRemotePath = "\\Server1\Freigabe1"
strNewName = "Name_des_Laufwerks"
' Section to map the network drive
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
--> entspricht "net use P: \\Server1\Freigabe1"
' Section which actually (re)names the Mapped Drive
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName
Wscript.Echo "Check : "& strDriveLetter & " for " & strNewName
WScript.Quit
Alles klar? Du mußt also einfach die drei Variablen oben ändern: strDriveLetter, strRemotePath und strNewName - dann sollte das funktionieren. Pass es also an, speicher das so in ein Textfile namens RenameDrive.vbs oder ähnlich und führ es aus. Aus Deinem Logonscript heraus kannst Du es mit dem Kommando "call RenameDrive.vbs" aufrufen (wenn es nicht im selben Ordner liegen sollte, pack den Pfad noch dabei).
Grüße,
Arne (fritzo)
Hallo,
ich hab grade eben Dein Skript ausprobiert. Hab es, so wie beschrieben eins zu eins übernommen. Bis zur Zeile 20 funktioniert alles reibungslos. Dann erhalte ich eine Windows Fehlermeldung "Fehler: Objekt erforderlich: NameSpace(...)"
Ich bin ein absoluter vbs Laie, aber für mich hört sich dass an, als hätte ich eine Variable in den Zeilen zuvor nicht richtig definiert, was ich allerdings getan habe.
ich hab grade eben Dein Skript ausprobiert. Hab es, so wie beschrieben eins zu eins übernommen. Bis zur Zeile 20 funktioniert alles reibungslos. Dann erhalte ich eine Windows Fehlermeldung "Fehler: Objekt erforderlich: NameSpace(...)"
Ich bin ein absoluter vbs Laie, aber für mich hört sich dass an, als hätte ich eine Variable in den Zeilen zuvor nicht richtig definiert, was ich allerdings getan habe.
Kann mir das jemand erklären: Das Skript läuft bei fast allen Rechnern sauber durch. Nur bei einem wird statt "Buero-Daten" meistens (aber nicht immer) "daten auf server" (Y angezeigt. Das ist eben komischerweise nur manchmal der Fall. Habe mich codeseitig (allein schon aus Unkenntnis) eng an die Vorlage gehalten. Nur die Abfrage zum Schluß habe ich auskommentiert weil das auf Dauer nervt. Mache ich was falsch oder ist beim Rechner was nicht richtig?
Hier der Code:
Hier der Code:
' VBScript to map a network drive.
' Authors Guy Thomas and Barry Maybury
' Version 1.3 - January 23rd 2005
' ----------------------------------------'
'Option Explicit
Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName
'
strDriveLetter = "Y:"
strRemotePath = "\\server\daten"
strNewName = "Buero-Daten"
' Section to map the network drive
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
' Section which actually (re)names the Mapped Drive
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName
'Wscript.Echo "Check : "& strDriveLetter & " for " & strNewName
WScript.Quit
' End of script.
Hi,
eventuell funktioniert "objShell.NameSpace(strDriveLetter).Self.Name = strNewName" nicht, weil er mit MapNetworkDrive noch nicht durch ist. Versuch mal, vor dem Umbenennen eine Pause einzufügen --> "Wscript.Sleep 3000"
@Babu
Welche Version des WSH ist bei Dir installiert? 5.6?
eventuell funktioniert "objShell.NameSpace(strDriveLetter).Self.Name = strNewName" nicht, weil er mit MapNetworkDrive noch nicht durch ist. Versuch mal, vor dem Umbenennen eine Pause einzufügen --> "Wscript.Sleep 3000"
@Babu
Welche Version des WSH ist bei Dir installiert? 5.6?
Hi Fritzo,
hab das Problem anderweitig (mit einer Batch Datei und einigen Registry-Einträgen) gelöst. Ich hab in anderen Foren rausgefunden, daß es wohl an meiner WSH Version liegt. Leider weiß ich nicht wo ich das nachschauen kann. Wie gesagt, bin ein absoluter Laie. Betriebssystem ist Windows 2000 Professional, falls Dir das was nutzt.
Gruß
BaBu
hab das Problem anderweitig (mit einer Batch Datei und einigen Registry-Einträgen) gelöst. Ich hab in anderen Foren rausgefunden, daß es wohl an meiner WSH Version liegt. Leider weiß ich nicht wo ich das nachschauen kann. Wie gesagt, bin ein absoluter Laie. Betriebssystem ist Windows 2000 Professional, falls Dir das was nutzt.
Gruß
BaBu
W2K hat soweit ich weiß eine niedrigere Version. Du kannst Dir die Version ausgeben lassen - öffne mal mit "cmd.exe" eine Dosbox und gib da "cscript" ein und drück Return - in der folgenden Ausgabe sollte ganz oben die Versionsnummer des Windows Script Hosts genannt sein.
Hier kannst Du den WSH 5.6 downloaden, falls Du willst: Download WSH 5.6
Grüße,
fritzo
Hier kannst Du den WSH 5.6 downloaden, falls Du willst: Download WSH 5.6
Grüße,
fritzo
@fritzo:
Die Pause wars, ganz ans Ende vom Skript eingefügt, klappt es jetzt. Danke!
5min später:
Ha, zu früh gefreut! Wenn ich das Laufwerk (Bsp. X öffne und wieder schließe, ist wieder "Daten auf server... " zu lesen. Es ist doch zum Mäusemelken. Was kann das denn man bloß sein?
Die Pause wars, ganz ans Ende vom Skript eingefügt, klappt es jetzt. Danke!
5min später:
Ha, zu früh gefreut! Wenn ich das Laufwerk (Bsp. X öffne und wieder schließe, ist wieder "Daten auf server... " zu lesen. Es ist doch zum Mäusemelken. Was kann das denn man bloß sein?
Hi Fritzo,
vielen Dank. Wieder was gelernt...........!
Ich hab die Version 5.6 bereits. Das
heißt Dein Script müsste, rein
technisch gesehen, funktionieren oder?
Gruß Babu
vielen Dank. Wieder was gelernt...........!
Ich hab die Version 5.6 bereits. Das
heißt Dein Script müsste, rein
technisch gesehen, funktionieren oder?
Gruß Babu
Rein technisch ja. Bei mir funktionierts. Wir werden aber wahrscheinlich so zuviel Zeit mit der Suche verschwenden. Manchmal ist es schlauer, einfach was alternatives zu versuchen. Versuch mal dieses Script; es ist einfacher und sollte daher besser funktionieren:
strDrive = "P:"
strPath = "\\server\share"
boolPersistent = True ' True = Persistent ; False = Not Persistent
set objNetwork = WScript.CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDrive, strPath, boolPersistent
WScript.Echo "Drive gemappt"
Ha, zu früh gefreut! Wenn ich das
Laufwerk (Bsp. X öffne und wieder
schließe, ist wieder "Daten auf
server... " zu lesen. Es ist doch zum
Mäusemelken. Was kann das denn man
bloß sein?
Laufwerk (Bsp. X öffne und wieder
schließe, ist wieder "Daten auf
server... " zu lesen. Es ist doch zum
Mäusemelken. Was kann das denn man
bloß sein?
@Schnacker
Wirklich keinen Plan; ich kriege es hier nicht nachgestellt.
Gruß
fritzo
Wegen des Umbenennens - habt ihr das Posting von gemini gelesen, das auf http://www.mcseboard.de/showthread.php?threadid=22357 verweist, wo erklärt ist, wie man die gemappten Drives mittels regkey umbenennt?
Bei mir geht es nicht. Er vergißt die Einstellungen (auch wenn man sie bei Mountpoints2 manuell einträgt) nach kurzer Zeit und dann heißt es wieder "xxx auf Server". Da das aber mit dem Skript nix zu tun hat. werde ich mal mein Problem in einem neuen Fred anprangern.
Danke allen für die bereits geleistete Hilfe
Danke allen für die bereits geleistete Hilfe
hallo zusammen,
das scrpt von frizto ist genial, endlich kann ich meine netzlaufwerke umbenennen,
allerdings würde ich es gerne um weitere netzlaufwerke erweitern, da ich keine ahnung
habe von vbs wäre es super, wenn mir jemand sagen könnte, wie das script ausehen
sollte, des weiteren wäre es super, wenn man vorher abfragen würde, ob die
laufwerke vorhanden sind, und nur verbunden werden soll, wenn das netzlaufwerk
nicht existiert, macht ja sonst kein sinn. momentan sieht es so aus:
das scrpt von frizto ist genial, endlich kann ich meine netzlaufwerke umbenennen,
allerdings würde ich es gerne um weitere netzlaufwerke erweitern, da ich keine ahnung
habe von vbs wäre es super, wenn mir jemand sagen könnte, wie das script ausehen
sollte, des weiteren wäre es super, wenn man vorher abfragen würde, ob die
laufwerke vorhanden sind, und nur verbunden werden soll, wenn das netzlaufwerk
nicht existiert, macht ja sonst kein sinn. momentan sieht es so aus:
' NameDrive.vbs
' VBScript to map a network drive.
' Authors Guy Thomas and Barry Maybury
' Version 1.3 - January 23rd 2005
' ----------------------------------------'
'
Option Explicit
Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName
'
strDriveLetter = "Z:"
strRemotePath = "\\192.168.1.100\arbeit"
strNewName = "ARBEIT"
' Section to map the network drive
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
' Section which actually (re)names the Mapped Drive
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName
Wscript.Echo "Check : "& strDriveLetter & " for " & strNewName
WScript.Quit
' End of script.
Hallo, hier fritzo.
Um mehrere Laufwerke anzubinden, könntest Du mehrere Scripts erstellen. Eleganter aber ist es, wenn man das alles in einem einzigen Script macht, und zwar so:
Als erstes lagern wir die Routine, mit der die Laufwerke angebunden werden, in eine Subroutine (Sub) aus und benennen diese "MapDrive".
Diese Subroutine füttern wir mit dem Laufwerksbuchstaben (drv) und dem Pfad (drvpath).
Im Hauptteil des Scripts brauchen wir nun nur noch die Subroutine aufrufen und jeweils das Laufwerk und den Pfad als Argument mitzugeben.
Unten das fertige Script - Du mußt nur noch die Daten für die Laufwerke entsprechend ändern, also diese Zeilen hier:
MapDrive "I:", "\\192.168.1.100\bilder", "Bilder"
Wenn Du mehr Laufwerke anbinden willst, füg eine weitere dieser Zeilen ein und ändere sie für Deine Belange um. Wenn Du weniger brauchst, lösch einfach die Zeilen, die Du nicht brauchst.
Ok, ich hoffe, Du kommst so zurecht - wenn nicht, meld Dich.
Viele Grüße,
fritzo
[Edit Biber] Ich finde es schöner mit Codeformatierung.[/Edit]
Um mehrere Laufwerke anzubinden, könntest Du mehrere Scripts erstellen. Eleganter aber ist es, wenn man das alles in einem einzigen Script macht, und zwar so:
Als erstes lagern wir die Routine, mit der die Laufwerke angebunden werden, in eine Subroutine (Sub) aus und benennen diese "MapDrive".
Diese Subroutine füttern wir mit dem Laufwerksbuchstaben (drv) und dem Pfad (drvpath).
Im Hauptteil des Scripts brauchen wir nun nur noch die Subroutine aufrufen und jeweils das Laufwerk und den Pfad als Argument mitzugeben.
Unten das fertige Script - Du mußt nur noch die Daten für die Laufwerke entsprechend ändern, also diese Zeilen hier:
MapDrive "I:", "\\192.168.1.100\bilder", "Bilder"
Wenn Du mehr Laufwerke anbinden willst, füg eine weitere dieser Zeilen ein und ändere sie für Deine Belange um. Wenn Du weniger brauchst, lösch einfach die Zeilen, die Du nicht brauchst.
Ok, ich hoffe, Du kommst so zurecht - wenn nicht, meld Dich.
Viele Grüße,
fritzo
' MapDrives.vbs
' by fritzo@stop1984.org in 12/2010
' VBScript to map multiple network drives
' enhancement of namedrive.vbs by Guy Thomas and Barry Maybury
' ----------------------------------------'
Option Explicit
Dim objNetwork, objShell,
Dim drv, drvpath, drvname
' Syntax is MapDrive "DriveLetter", "UNC-Path", "DriveName"
MapDrive "H:", "\\192.168.1.100\arbeit", "Arbeit"
MapDrive "I:", "\\192.168.1.100\bilder", "Bilder"
MapDrive "J:", "\\192.168.1.100\mp3", "Musik"
MapDrive "K:", "\\192.168.1.100\angeln", "DankeFuerDenFisch"
' End of script.
Wscript.Quit
Sub MapDrive (drv, drvpath, drvname)
' Section to map the network drive
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive drv, drvpath, asc (drvname) ' --> have to use asc to change drvname to ascii, otherwise you will get type conversion error
' Section which actually (re)names the Mapped Drive
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(drv).Self.Name = drvname
Wscript.Echo "Check : "& drv & " for " & drvname
Set objNetwork = Nothing
Set objShell = Nothing
End Sub
[Edit Biber] Ich finde es schöner mit Codeformatierung.[/Edit]
hallo fritzo,
erstmal vielen Dank für Deine schnelle Hilfe
ich habe jetzt mal Deinen Code getestet, allerdings erhalte ich noch
eine Fehlermeldung:
Skript: D:\test.vbs
Zeile: 8
Zeichen: 26
Fehler: Bezeichner erwartet
Code: 800A03F2
Quelle: Kompilierungsfehler in Microsoft VBScript.
Aber vielleicht sage ich Dir noch kurz was ich vorhab:
- prüfe zuerst ob folgende Netzlaufwerke vorhanden sind:
Laufwerk Z: \\192.168.1.100\arbeit
Laufwerk Y \\192.168.1.100\bilder
wenn ja, mache nichts. wenn nein, mappe bitte oben aufgeführten
netzlaufwerke, und benenne diese bitte um:
Z: ARBEIT
Y: BILDER
erstmal vielen Dank für Deine schnelle Hilfe
ich habe jetzt mal Deinen Code getestet, allerdings erhalte ich noch
eine Fehlermeldung:
Skript: D:\test.vbs
Zeile: 8
Zeichen: 26
Fehler: Bezeichner erwartet
Code: 800A03F2
Quelle: Kompilierungsfehler in Microsoft VBScript.
Aber vielleicht sage ich Dir noch kurz was ich vorhab:
- prüfe zuerst ob folgende Netzlaufwerke vorhanden sind:
Laufwerk Z: \\192.168.1.100\arbeit
Laufwerk Y \\192.168.1.100\bilder
wenn ja, mache nichts. wenn nein, mappe bitte oben aufgeführten
netzlaufwerke, und benenne diese bitte um:
Z: ARBEIT
Y: BILDER
Hallo konces,
Fehler beseitigt (das Komma am Ende von Zeile 8 war zuviel) und die beiden von Dir genannten Laufwerke sind jetzt drin. Wenn die Laufwerke bereits vorhanden sind, passiert nichts; wenn sie nicht vorhanden sind, werden die Shares angebunden.
hf,
fritzo
Fehler beseitigt (das Komma am Ende von Zeile 8 war zuviel) und die beiden von Dir genannten Laufwerke sind jetzt drin. Wenn die Laufwerke bereits vorhanden sind, passiert nichts; wenn sie nicht vorhanden sind, werden die Shares angebunden.
hf,
fritzo
' -------------------------------------------------------'
' MapDrives.vbs
' by fritzo@stop1984.org in 12/2010
' VBScript to map multiple network drives
' enhancement of namedrive.vbs by Guy Thomas and Barry Maybury
' -------------------------------------------------------'
Option Explicit
Dim objNetwork, objShell, objFile
Dim drv, drvpath, drvname
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Shell.Application")
Set objFile = CreateObject("Scripting.FileSystemObject")
MapDrive "Z:", "\\192.168.1.100\arbeit", "Arbeit"
MapDrive "Y:", "\\192.168.1.100\bilder", "Bilder"
Set objNetwork = Nothing
Set objShell = Nothing
Set objFile = Nothing
Wscript.Quit
Sub MapDrive (drv, drvpath, drvname)
If objFile.DriveExists(drv) Then
WScript.Echo "Drive already exists"
Exit Sub
Else
objNetwork.MapNetworkDrive drv, drvpath, asc (drvname)
objShell.NameSpace(drv).Self.Name = drvname
Wscript.Echo "Check : "& drv & " for " & drvname
End If
End Sub
Hallo! Ich finde das Skript richtig praktisch, bei mir funktioniert alles bestens.
Leider kenne ich mich mit vbs nicht so gut aus, wäre es möglich eine PRÜFUNG einzubauen ala'
WENN SERVER ONLINE --> DANN MOUNTEN
WENN SERVER OFFLINE --> SKRIPT ABBRECHEN / NICHT MOUNTEN
Vielleicht kann jemand weiterhelfen? LG
Leider kenne ich mich mit vbs nicht so gut aus, wäre es möglich eine PRÜFUNG einzubauen ala'
WENN SERVER ONLINE --> DANN MOUNTEN
WENN SERVER OFFLINE --> SKRIPT ABBRECHEN / NICHT MOUNTEN
Vielleicht kann jemand weiterhelfen? LG
Hallo,
da ich eine Anfrage von GWeidt erhalten habe mit der Bitte, seine Version des Mapping-Scripts so zu ändern, daß es zusätzlich
1. erst prüft ob das Netzwerk aktiv ist..
2. ob das Laufwerk bereits belegt ist..
... hier eine überarbeitete Version.
Bitte vor Einsatz in der Produktion testen, ich bin hier momentan an einem Standalone-Rechner.
Gruß,
fritzo
' +++++++++++++++++++++++++ schnipp +++++++++++++++++++++++++++
Option Explicit
' Variablen dimensionieren
DIM objNetwork, objShell
DIM strDrive, strRemotePath, strServer
DIM strNewName, colAllDrives
DIM i, AlreadyConnected
DIM objShellApp
' Variablen belegen
strDrive = "X:"
strServer = "Server"
strNewName = "sharename"
strRemotePath = "\\" & strServer & "\share"
' Objekte referenzieren
Set objNetwork = CreateObject("WScript.Network")
Set colAllDrives = objNetwork.EnumNetworkDrives()
Set objShellApp = CreateObject("Shell.Application")
' ###########################################################################
' ############### Loop: sind wir am Netz?
' ############### Wenn nein, 1000ms warten und erneut prüfen
' ###########################################################################
Do While Online (strServer) = False
WScript.Sleep 1000
Loop
' ###########################################################################
' ############### Prüfen, ob Laufwerk X: bereits belegt ist
' ###########################################################################
AlreadyConnected = False
For i = 0 To AllDrives.Count - 1 Step 2
If AllDrives.Item(i) = strDrive Then AlreadyConnected = True
Next
' ###########################################################################
' ############### AlreadyConnected = True = Laufwerk bereits belegt
' ###########################################################################
If AlreadyConnected = True Then
objNetwork.RemoveNetworkDrive strDrive ' diese beiden Zeilen auskommentieren
WScript.Sleep 2000 ' 2000ms Pause ' wenn nichts passieren soll
Else
' ###########################################################################
' ############### AlreadyConnected = False = Laufwerk bereits belegt
' ###########################################################################
objNetwork.MapNetworkDrive strDrive, strRemotePath, false, "Benutzername der Freigabe", "Passwort"
' 2000ms Pause
WScript.Sleep 2000
' Netzlaufwerk umbenennen
objShellApp.NameSpace(strDrive).Self.Name = strNewName
End if
' Objekte destruieren
Set objShell = Nothing
Set objNetwork = Nothing
Set objShellApp = Nothing
' Script Ende
WScript.Quit
' ######################################
' Funktionen
' ######################################
Function Online(strComputer)
DIM wmiQuery, objWMIService, objPing, objStatus
wmiQuery = "Select * From Win32_PingStatus Where Address = '" & strComputer & "'"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objPing = objWMIService.ExecQuery(wmiQuery)
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) Or objStatus.Statuscode<>0 Then
Online = False
Else
Online = True
End If
Next
End Function
' +++++++++++++++++++++++++ schnipp +++++++++++++++++++++++++++
da ich eine Anfrage von GWeidt erhalten habe mit der Bitte, seine Version des Mapping-Scripts so zu ändern, daß es zusätzlich
1. erst prüft ob das Netzwerk aktiv ist..
2. ob das Laufwerk bereits belegt ist..
... hier eine überarbeitete Version.
Bitte vor Einsatz in der Produktion testen, ich bin hier momentan an einem Standalone-Rechner.
Gruß,
fritzo
' +++++++++++++++++++++++++ schnipp +++++++++++++++++++++++++++
Option Explicit
' Variablen dimensionieren
DIM objNetwork, objShell
DIM strDrive, strRemotePath, strServer
DIM strNewName, colAllDrives
DIM i, AlreadyConnected
DIM objShellApp
' Variablen belegen
strDrive = "X:"
strServer = "Server"
strNewName = "sharename"
strRemotePath = "\\" & strServer & "\share"
' Objekte referenzieren
Set objNetwork = CreateObject("WScript.Network")
Set colAllDrives = objNetwork.EnumNetworkDrives()
Set objShellApp = CreateObject("Shell.Application")
' ###########################################################################
' ############### Loop: sind wir am Netz?
' ############### Wenn nein, 1000ms warten und erneut prüfen
' ###########################################################################
Do While Online (strServer) = False
WScript.Sleep 1000
Loop
' ###########################################################################
' ############### Prüfen, ob Laufwerk X: bereits belegt ist
' ###########################################################################
AlreadyConnected = False
For i = 0 To AllDrives.Count - 1 Step 2
If AllDrives.Item(i) = strDrive Then AlreadyConnected = True
Next
' ###########################################################################
' ############### AlreadyConnected = True = Laufwerk bereits belegt
' ###########################################################################
If AlreadyConnected = True Then
objNetwork.RemoveNetworkDrive strDrive ' diese beiden Zeilen auskommentieren
WScript.Sleep 2000 ' 2000ms Pause ' wenn nichts passieren soll
Else
' ###########################################################################
' ############### AlreadyConnected = False = Laufwerk bereits belegt
' ###########################################################################
objNetwork.MapNetworkDrive strDrive, strRemotePath, false, "Benutzername der Freigabe", "Passwort"
' 2000ms Pause
WScript.Sleep 2000
' Netzlaufwerk umbenennen
objShellApp.NameSpace(strDrive).Self.Name = strNewName
End if
' Objekte destruieren
Set objShell = Nothing
Set objNetwork = Nothing
Set objShellApp = Nothing
' Script Ende
WScript.Quit
' ######################################
' Funktionen
' ######################################
Function Online(strComputer)
DIM wmiQuery, objWMIService, objPing, objStatus
wmiQuery = "Select * From Win32_PingStatus Where Address = '" & strComputer & "'"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objPing = objWMIService.ExecQuery(wmiQuery)
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) Or objStatus.Statuscode<>0 Then
Online = False
Else
Online = True
End If
Next
End Function
' +++++++++++++++++++++++++ schnipp +++++++++++++++++++++++++++