Hier mal was als VB-Script
'
' MapDrives.VBS
'
' WSH ab Version 2.0 (5.1)
' Abbilden von festen Netzfreigaben auf lokale Laufwerksbuchstaben
' für W2000
'
'
' Variablen
'
Option Explicit
On Error Resume Next
Dim WSHFile, WSHShell, WSHNetwork, Command, ErrorCode
Dim MakroName, Version, LogProg, LogText
Dim Name, FName
Dim Text, Titel, Stil, Ergebnis
Dim LocalDrive(), NetDriveShare(), NetDriveShareText()
Dim LW, LWFlag, LWStatus
Dim ObjArgs, Arg, Argument(), i
Dim CRLF, TAB, x
CRLF = vbCRLF
TAB = vbTAB
' WSHFile Object.
Set WSHFile = CreateObject("Scripting.FileSystemObject")
' WSHShell Object.
Set WSHShell = WScript.CreateObject("WScript.Shell")
' WSHNetwork Object.
Set WSHNetwork = WScript.CreateObject("WScript.Network")
' Variablen vorbelegen.
Name = WScript.ScriptName
FName = WScript.ScriptFullName
LogProg = Left(FName, InstrRev(FName, "\")) & "Log.vbs"
MakroName = "'" & Left(Name, InstrRev(Name, ".") - 1) & "'"
Version = "V1.2"
' Bei Änderungen auch hier anpassen.
ReDim Preserve LocalDrive(4), NetDriveShare(4), NetDriveText(4)
LocalDrive(0) = "k:"
NetDriveShare(0) = "\\tgt_dc1\d"
NetDriveText(0) = "d: auf tgt_dc1"
LocalDrive(1) = "t:"
NetDriveShare(1) = "\\tgt_dc1\cd-rom"
NetDriveText(1) = "cd-rom auf tgt_dc1"
LocalDrive(2) = "u:"
NetDriveShare(2) = "\\tgt_dc1\bereiche"
NetDriveText(2) = "bereiche auf tgt_dc1"
LocalDrive(3) = "x:"
NetDriveShare(3) = "\\tgt_dc1\profiles"
NetDriveText(3) = "profiles auf tgt_dc1"
LocalDrive(4) = "y:"
NetDriveShare(4) = "\\tgt_dc1\users"
NetDriveText(4) = "users auf tgt_dc1"
If (WSHFile.FileExists(LogProg)) Then
' Information protokollieren.
LogText = "4" & Space(1) & Chr(34) & MakroName & " - Start (" & FName & ")" & Chr(34)
Command = LogProg & Space(1) & LogText
ErrorCode = WSHShell.Run(Command, 1, True)
End If
' Fehlerroutine.
Sub ErrorCheck(ErrorCode)
Select Case ErrorCode
Case 0
' kein Fehler, Durchlauf O.K. !!!
Case - 2147024829
Text = "Netzwerkressource " & NetDriveShare(x) & CRLF
Text = Text & "existiert nicht - keine Verbindung möglich !"
Titel = MakroName & " Routine " & Version
Stil = vbCritical + vbOkOnly
WSHShell.Popup Text, 5, Titel, Stil
Case - 2147024811
Text = "Laufwerk " & LocalDrive(x)
Text = Text & "existiert bereits - keine Verbindung möglich !"
Titel = MakroName & " Routine " & Version
Stil = vbCritical + vbOkOnly
WSHShell.Popup Text, 5, Titel, Stil
Case Else
Text = "Fehlercode: " & CStr(ErrorCode) & CRLF
Text = Text & "Bitte überprüfen !"
Titel = MakroName & " Routine " & Version
Stil = vbCritical + vbOkOnly
WSHShell.Popup Text, 5, Titel, Stil
End Select
End Sub
' Sub für Endemeldung im Makro.
Sub EndeBox()
' Ausschriften nur ohne Argument.
If IsEmpty(Arg) Then
Text = "Ende - Mapping diverse Netzfreigaben !!!"
' Text = Text & Space(5) & "(" & cStr(Date) & " - " & cStr(Time) & ")"
Titel = MakroName & " Routine " & Version
Stil = vbInformation + vbOkOnly
WSHShell.Popup Text, 5, Titel, Stil
End If
If (WSHFile.FileExists(LogProg)) Then
' Information protokollieren.
LogText = "4" & Space(1) & Chr(34) & MakroName & " - Ende (" & FName & ")" & Chr(34)
Command = LogProg & Space(1) & LogText
ErrorCode = WSHShell.Run(Command, 1, True)
End If
' Object trennen.
WScript.DisconnectObject WSHShell
Set WSHShell = Nothing
WScript.DisconnectObject WSHFile
Set WSHFile = Nothing
WScript.DisconnectObject WSHNetwork
Set WSHNetwork = Nothing
WScript.DisconnectObject ObjArgs
Set ObjArgs = Nothing
WScript.DisconnectObject LW
Set LW = Nothing
WScript.Quit
End Sub
' Beginn Main.
' Argument(e) auslesen.
Set ObjArgs = Wscript.Arguments
For i = 0 To ObjArgs.Count - 1
ReDim Preserve Argument(i)
Argument(i) = ObjArgs(i)
Next
' Erstes Argument herausfiltern, wenn gesetzt.
If (i > 0) Then Arg = UCase(Argument(0)) End If
LWFlag = 1
Text = "Folgende Freigaben wurden dauerhaft verbunden:" & CRLF & CRLF
For x=0 To UBound(LocalDrive, 1)
If (WSHFile.DriveExists(LocalDrive(x))) Then
Set LW = WSHFile.GetDrive(LocalDrive(x))
If (LW.ShareName = "") Then
' dann kein Netzlaufwerk vorhanden, kann also
' auch nicht getrennt werden.
LWFlag = 0
Else
' Laufwerk trennen, wenn schon verbunden, auch wenn diese
' Freigabe momentan aktiv ist und aus Benutzerprofil entfernen.
WSHNetwork.RemoveNetworkDrive LocalDrive(x), True, True
LWFlag = 1
End If
End If
' Wenn Variable auf 0 gesetzt erfolgt kein erneutes Verbinden.
If LWFlag Then
' Laufwerk dauerhaft mit Share verbinden,
' kann auch noch über Benutzername und Passwort verbunden werden (z.B. W2000).
WSHNetwork.MapNetworkDrive LocalDrive(x), NetDriveShare(x), True
' Auftretende Fehler anzeigen.
ErrorCheck(Err.Number)
' Test ob Laufwerk funktionsfähig.
Set LW = WSHFile.GetDrive(LocalDrive(x))
If LW.IsReady Then LWStatus = "up" Else LWStatus = "down" End If
Else
LWStatus = "failed"
End If
Text = Text & LocalDrive(x) & Space(3) & NetDriveShare(x) & CRLF
Text = Text & Space(6) & "--> " & NetDriveText(x) & TAB & TAB & LWSTATUS & CRLF & CRLF
Next
' Ausschriften nur ohne Argument.
If IsEmpty(Arg) Then
Titel = "Mapping Drive's"
Stil = vbInformation + vbOkOnly
WSHShell.Popup Text, 15, Titel, Stil
End If
EndeBox