68955
Goto Top

Share mapping mit VBS

Ein kleines VBS das Shares gruppenspezifisch mappt und die Shares beim Client automatisch umbenennt!

Hier ein VB Script das verschiedene Shares auf einem Computer Gruppenspezifisch und/oder Userspezifisch hinzufügt!
Remote Shares können auch gemappt werden!
Ich habe grosse Teile des Scripts aus diesem und anderen Foren zusammengefügt und teilweise erweitert.

Das ganze ist auskommentiert, trotzdem noch einige Ergänzungen:

Unter,
'Set objDomain = getObject("LDAP://rootDse")'
'DomainString = objDomain.Get("dnsHostName")'
muss nichts geändert werden, das Script sucht sich die Angaben selbst sofern das Script in einer Domäne von einem Domänenbenutzer ausgeführt wird!


Unter,
''Map drives'
''Note the first command uses the user name as a variable to map to a user share.'
'WSHNetwork.MapNetworkDrive "u:", "\\SERVERNAME\USERSHARE\" & UserString,True'
'WSHNetwork.MapNetworkDrive "l:", "\\SERVERNAME\TRANSFERSHARE",True'
'WSHNetwork.MapNetworkDrive "t:", "\\SERVERNAME\TEMPSHARE",True'
können Shares angegeben werden die bei JEDEM User gemapt werden, zbsp. Usershares (siehe "UserString"), Transfershares etc.


Unter,
''Check for group memberships and take needed action'
'Case "GRUPPE1"'
'WSHNetwork.MapNetworkDrive "w:", "\\SERVERNAME\SHARE1",True'
Beginnt das Script mit dem ersten Mapping von Gruppenspezifischen Shares. Jeder User der in "GRUPPE1" ist bekommt "SHARE1" mit Laufwerksbuchstaben "W:" usw.

Unter,
'Case "REMOTEUSERS"'
'Set objNetwork = WScript.CreateObject("WScript.Network")'
'strLocalDrive = "O:"'
'strRemoteShare = "\\172.0.0.1\SHARE"'
'strPer = "FALSE"'
'strUsr = "BENUTZERNAME"'
'strPas = "PASSWORT"'
'objNetwork.MapNetworkDrive strLocalDrive, strRemoteShare, strPer, strUsr, strPas'
Kann ein Share gemappt werden das auf einem anderen Server oder ausserhalb der Domäne liegt. Will man ein weiteres solches Laufwerk mappen, ist zu beachten,
das die Zeile "'objNetwork.MapNetworkDrive strLocalDrive, strRemoteShare, strPer, strUsr, strPas'" für jedes weitere Laufwerk editiert werden muss. Also für das zweite Laufwerk:
'objNetwork.MapNetworkDrive1 strLocalDrive1, strRemoteShare1, strPer1, strUsr1, strPas1' und beim dritten dann jeweils mit "2" usw.


Unter,
''Rename the Drives'
'WshShell.RegWrite KEY_MountPoint & "##SERVERNAME#TRANSFERSHARE\_LabelFromReg" , "Transfer" , "REG_SZ"'
Werden alle Shares umbenannt, da sonst die eingebundenen Laufwerke "Transfershare auf "Servername"" heissen, was relativ unschön ist, die Veränderung wird in der Registry vorgenommen da dort die Laufwerksnamen hinengeschrieben werden!


ON ERROR RESUME NEXT

Dim WSHShell, WSHNetwork, objDomain, DomainString, UserString, UserObj, Path, objNetwork, objNetwork1
'used to point at the registry to change the name of the drives  
KEY_MountPoint = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\"  
Set WSHShell = CreateObject("WScript.Shell")  
Set WSHNetwork = CreateObject("WScript.Network")  
'Automatically find the domain name  
Set objDomain = getObject("LDAP://rootDse")  
DomainString = objDomain.Get("dnsHostName")  
WinDir = WshShell.ExpandEnvironmentStrings("%WinDir%")  

'Grab the user name  
UserString = WSHNetwork.UserName
'Bind to the user object to get user name and check for group memberships later  
Set UserObj = GetObject("WinNT://" & DomainString & "/" & UserString)  

'Grab the computer name for use in add-on code later  
strComputer = WSHNetwork.ComputerName

'Disconnect ALL mapped drives  
Set clDrives = WshNetwork.EnumNetworkDrives
For i = 0 to clDrives.Count -1 Step 2
WSHNetwork.RemoveNetworkDrive clDrives.Item(i), True, True
Next

'Give the PC time to do the disconnect, wait 300 milliseconds  
wscript.sleep 300

'Map drives  
'Note the first command uses the user name as a variable to map to a user share.  
WSHNetwork.MapNetworkDrive "u:", "\\SERVERNAME\USERSHARE\" & UserString,True  
WSHNetwork.MapNetworkDrive "l:", "\\SERVERNAME\TRANSFERSHARE",True  
WSHNetwork.MapNetworkDrive "t:", "\\SERVERNAME\TEMPSHARE",True  

'Now check for group memberships and map appropriate drives to add more remote shares use strlocaldrive1, strremoteshare1, strperl1, strusr1, strpas1  
For Each GroupObj In UserObj.Groups
Select Case GroupObj.Name
'Check for group memberships and take needed action  
Case "GRUPPE1"  
WSHNetwork.MapNetworkDrive "w:", "\\SERVERNAME\SHARE1",True  
Case "GRUPPE2"  
WSHNetwork.MapNetworkDrive "n:", "\\SERVERNAME\SHARE2",True  
Case "GRUPPE3"  
WSHNetwork.MapNetworkDrive "p:", "\\SERVERNAME\SHARE3",True  
Case "GRUPPE4"  
WSHNetwork.MapNetworkDrive "q:", "\\SERVERNAME\SHARE4",True  
Case "GRUPPE5"  
WSHNetwork.MapNetworkDrive "s:", "\\SERVERNAME\SHARE5",True  
Case "GRUPPE6"  
WSHNetwork.MapNetworkDrive "m:", "\\SERVERNAME\SHARE6",True  
Case "GRUPPE7"  
WSHNetwork.MapNetworkDrive "r:", "\\SERVERNAME\SHARE7",True  
Case "GRUPPE8"  
WSHNetwork.MapNetworkDrive "r:", "\\SERVERNAME\SHARE8",True  
Case "REMOTEUSERS"  
Set objNetwork = WScript.CreateObject("WScript.Network")  
strLocalDrive = "O:"  
strRemoteShare = "\\172.0.0.1\SHARE"  
strPer = "FALSE"  
strUsr = "BENUTZERNAME"  
strPas = "PASSWORT"  
objNetwork.MapNetworkDrive strLocalDrive, strRemoteShare, strPer, strUsr, strPas
End Select



Next

'Rename the Drives  
WshShell.RegWrite KEY_MountPoint & "##SERVERNAME#TRANSFERSHARE\_LabelFromReg" , "Transfer" , "REG_SZ"  
WshShell.RegWrite KEY_MountPoint & "##SERVERNAMEr#SHARE1\_LabelFromReg" , "Share XY" , "REG_SZ"  
WshShell.RegWrite KEY_MountPoint & "##SERVERNAME#SHARE2\_LabelFromReg" , "Share XY" , "REG_SZ"  
WshShell.RegWrite KEY_MountPoint & "##SERVERNAME#SHARE3\_LabelFromReg" , "Share XY" , "REG_SZ"  
WshShell.RegWrite KEY_MountPoint & "##SERVERNAME#SHARE4\_LabelFromReg" , "Share XY" , "REG_SZ"  
WshShell.RegWrite KEY_MountPoint & "##SERVERNAME#SHARE5\_LabelFromReg" , "Share XY" , "REG_SZ"  
WshShell.RegWrite KEY_MountPoint & "##SERVERNAME#SHARE6\_LabelFromReg" , "Share XY" , "REG_SZ"  
WshShell.RegWrite KEY_MountPoint & "##SERVERNAME#SHARE7\_LabelFromReg" , "Share XY" , "REG_SZ"  
WshShell.RegWrite KEY_MountPoint & "##SERVERNAME#SHARE8\_LabelFromReg" , "Share XY" , "REG_SZ"  
WshShell.RegWrite KEY_MountPoint & "##172.0.0.1#SHARE\_LabelFromReg" , "Remote Share" , "REG_SZ"  


'=====================================  
'Add On Code goes above this line  

'Clean Up Memory We Used  
set UserObj = Nothing
set GroupObj = Nothing
set WSHNetwork = Nothing
set DomainString = Nothing
set WSHSHell = Nothing
Set WSHPrinters = Nothing
Set objNetwork = Nothing
Set objNetwork1 = Nothing

'Quit the Script  
wscript.quit

Content-Key: 95252

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

Printed on: April 24, 2024 at 09:04 o'clock