wallakyl
asked on
Help with mapping user home directory via vbs script
Hi experts, I am just about finished with my login script thanks to some help I got already on here. Now I just need to map the home directory. I have included my entire script for reference but the part I am looking for help with is this line:
MapDrive "g:", "\\server1\user$\" & CurrentUser
Can anyone tell me what I've done wrong?
Thanks!
MapDrive "g:", "\\server1\user$\" & CurrentUser
Can anyone tell me what I've done wrong?
Thanks!
' =========== Start Of Script
Option Explicit
' On Error Resume Next
DIM oShell, oNetwork, oPrinters, oDrives
DIM ADSysInfo, CurrentUser, LogServer
DIM UsrGrp, i
Dim strDriveLetter, strDrivePath
' ======================================================= Pull in logged on Users Info
Set oShell = CreateObject("WScript.Shell")
LogServer = oShell.ExpandEnvironmentStrings("%logonserver%")
Set ADSysInfo = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
' ======================================================= Delete All Printers & Network Drives except the H: Drive
Set oNetwork = CreateObject("WScript.Network")
' Set oPrinters = oNetwork.EnumPrinterConnections
'
' ' === Printers
'
' For i = 0 to oPrinters.Count - 1 Step 2
' If Left(ucase(oPrinters.Item(i+1)),2) = "\\" Then
' oNetwork.RemovePrinterConnection oPrinters.Item(i+1)
' End If
' Next
'
' ' === Drives
Set oDrives = oNetwork.EnumNetworkDrives
For i = 0 to oDrives.Count - 1 Step 2
' If oDrives(i) <> "H:" Then
oNetwork.RemoveNetworkDrive oDrives(i), True, True
' End If
Next
' ======================================================= Map Printers
'To map printers use:
'oNetwork.AddWindowsPrinterConnection "PrinterLocation eg \\server\hp-printer"
'To set mapped printer as default:
'oNetwork.SetDefaultPrinter "PrinterPath"
' ======================================================= Map H & G Drives
MapDrive "h:", "\\server1\dept"
MapDrive "g:", "\\server1\user$\" & CurrentUser
' ======================================================= Map Drives Based on Group Membership
'
For Each UsrGrp In CurrentUser.Groups
Select Case uCase(right(Usrgrp.Name,Len(UsrGrp.Name) - 3))
Case "FINANCE"
MapDrive "i:", "\\server7\finance"
MapDrive "p:", "\\server4\fasserv"
Case "CENTRAL SCANNER"
MapDrive "j:", "\\server2\file_share"
Case "R13 SHOP-AT-HOME DISTRIBUTION LIST"
MapDrive "j:", "\\server2\file_share"
Case "HELIOSPCUSERS"
MapDrive "k:", "\\server3\marketing"
Case "TECHNOLOGY"
MapDrive "s:", "\\server1\install$"
MapDrive "n:", "\\server1\Minime"
Case "ONDEMANDDEV"
MapDrive "l:", "\\server5\content"
Case "HUMAN RESOURCES"
MapDrive "k:", "\\server6\Connect"
Case "BSTL"
MapDrive "O:", "\\server1\BSTL$"
End Select
Next
Sub MapDrive(strDriveLetter, strDrivePath)
oNetwork.MapNetworkDrive strDriveLetter, strDrivePath
End Sub
' ======================================================= Set the default SAP Environment Variable
oshell.run "setx SAPLOGON_INI_FILE ""h:\sapgui\all\saplogon.ini""", 6, True
' ======================================================= Map a SAP Group-Specific Environment Variable
For Each UsrGrp In CurrentUser.Groups
Select Case uCase(right(Usrgrp.Name,Len(UsrGrp.Name) - 3))
Case "SAPGUIFULL"
oshell.run "setx SAPLOGON_INI_FILE ""h:\sapgui\full\saplogon.ini""", 6, True
Case "SAPGUIBWFULL"
oshell.run "setx SAPLOGON_INI_FILE ""h:\sapgui\bwfull\saplogon.ini""", 6, True
Case "SAPGUIBW"
oshell.run "setx SAPLOGON_INI_FILE ""h:\sapgui\bw\saplogon.ini""", 6, True
Case "SAPGUIDEV"
oshell.run "setx SAPLOGON_INI_FILE ""h:\sapgui\dev\saplogon.ini""", 6, True
Case "SAPGUIDOMAIN"
oshell.run "setx SAPLOGON_INI_FILE ""h:\sapgui\DOMAIN\saplogon.ini""", 6, True
End Select
Next
WScript.Quit
ASKER
I had tried that, but it gives me an error:
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment
See screenshot at bottom of thread.
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment
See screenshot at bottom of thread.
What does line 59 now read?
ASKER
The new line you gave me - I changed it to this...the last line is 59
MapDrive "h:", "\\server1\dept"
'MapDrive "g:", "\\server1\user$\" & CurrentUser
oShell.MapNetworkDrive "g:", "\\server1\user$\" & CurrentUser,True
MapDrive "h:", "\\server1\dept"
'MapDrive "g:", "\\server1\user$\" & CurrentUser
oShell.MapNetworkDrive "g:", "\\server1\user$\" & CurrentUser,True
Try creating a value for the path
set homepath="\\server1\user$\ " & CurrentUser
add homepath to your dims
then change to
oShell.MapNetworkDrive "g:", homepath,True
set homepath="\\server1\user$\
add homepath to your dims
then change to
oShell.MapNetworkDrive "g:", homepath,True
ASKER
Same error unfortunately - this time in the:
set homepath="\\server1\user$\ " & CurrentUser
set homepath="\\server1\user$\
ASKER
Yeah, that's why I don't understand why it isn't working. That's how I have it I think.
you can use wscript.echo to display any values getting set to see if the error may be with one of your values
Like
wscript.echo CurrentUser
Like
wscript.echo CurrentUser
Hi,
here is a little tidbit of script courtesy of www.rlmueller.net.
-------------------------- ---------- ---------- ---------- ---------- ---------
' Map user home directory.
strHomeShare = objUser.homeDirectory
If (strHomeShare <> "") Then
strHomeDrive = objUser.homeDirDrive
If (strHomeDrive = "") Then
strHomeDrive = "H:"
End If
On Error Resume Next
objNetwork.MapNetworkDrive strHomeDrive, strHomeShare
If (Err.Number <> 0) Then
On Error GoTo 0
objNetwork.RemoveNetworkDr ive strHomeDrive, True, True
objNetwork.MapNetworkDrive strHomeDrive, strHomeShare
End If
On Error GoTo 0
End If
-------------------------- ---------- ---------- ---------- ---------- ---------- ---------- ---
The full script can be found at: http://www.rlmueller.net/Programs/Logon1.txt
It uses a different method of determining the current user and does some checking to make sure the drive isn't already mapped.
Hope this is helpfull for you.
cheers
Glen
here is a little tidbit of script courtesy of www.rlmueller.net.
--------------------------
' Map user home directory.
strHomeShare = objUser.homeDirectory
If (strHomeShare <> "") Then
strHomeDrive = objUser.homeDirDrive
If (strHomeDrive = "") Then
strHomeDrive = "H:"
End If
On Error Resume Next
objNetwork.MapNetworkDrive
If (Err.Number <> 0) Then
On Error GoTo 0
objNetwork.RemoveNetworkDr
objNetwork.MapNetworkDrive
End If
On Error GoTo 0
End If
--------------------------
The full script can be found at: http://www.rlmueller.net/Programs/Logon1.txt
It uses a different method of determining the current user and does some checking to make sure the drive isn't already mapped.
Hope this is helpfull for you.
cheers
Glen
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
On a side note: if the home drive and share is defined in the user's properties in ADUC (as it should be), then you won't have to map it in the logon script at all (you'd only have to exclude it from being deleted in line 36ff).
During logon, this drive will be automatically mapped. In addition, having the home drive property set in AD will as well set the environment variables HOMEDRIVE, HOMEPATH, HOMESHARE correctly; some programs evaluate these variables, and if there's no home drive specified in the user's properties, these variable will point to the local profile.
During logon, this drive will be automatically mapped. In addition, having the home drive property set in AD will as well set the environment variables HOMEDRIVE, HOMEPATH, HOMESHARE correctly; some programs evaluate these variables, and if there's no home drive specified in the user's properties, these variable will point to the local profile.
ASKER
The attached file replaces the file I attached in comment 24759579.
screenshot.jpg
screenshot.jpg
Line 61 above is empty; you'll need to post the exact script that is producing this error.
oShell.MapNetworkDrive "g:", "\\server1\user$\" & CurrentUser,True