Guest Jason Posted June 25, 2008 Posted June 25, 2008 Hi Ok here is the situation.... I have a .vbs login script in the user portion of group policy object that maps drives to the user account depending on the groups they are in. There's no actual problem with the script. It does what it should do however on 2 machines it simply will not map the drives. THe script is written to delete any mapped drive the user may have before mapping the drives set out by the script. On these two machines, the deletion takes place but the mapping does not. Now here is the odd part. If I run the script directly on the machine it works fine. If I log in to another machine with the same user it works fine so the problem seems to be specifically with these two computers. Does anyone have an idea of what could be causing this? Thanks Jason
Guest Pegasus \(MVP\) Posted June 25, 2008 Posted June 25, 2008 Re: Map Drive Login Script Issue "Jason" <Jason@discussions.microsoft.com> wrote in message news:171E6217-5AEA-42F9-8156-81E46510D4BC@microsoft.com... > Hi > > Ok here is the situation.... > > I have a .vbs login script in the user portion of group policy object that > maps drives to the user account depending on the groups they are in. > There's > no actual problem with the script. It does what it should do however on 2 > machines it simply will not map the drives. > > THe script is written to delete any mapped drive the user may have before > mapping the drives set out by the script. > > On these two machines, the deletion takes place but the mapping does not. > > Now here is the odd part. > > If I run the script directly on the machine it works fine. If I log in to > another machine with the same user it works fine so the problem seems to > be > specifically with these two computers. > > Does anyone have an idea of what could be causing this? > > Thanks > > Jason Here are a couple of suggestions: - Get the script to pause after mapping the share so that YOU can see what's going on. - Post your script so that WE can see what you're doing. And, of course, remove all "on error" statements from your script!
Guest Jason Posted June 25, 2008 Posted June 25, 2008 Re: Map Drive Login Script Issue "Pegasus (MVP)" wrote: > > "Jason" <Jason@discussions.microsoft.com> wrote in message > news:171E6217-5AEA-42F9-8156-81E46510D4BC@microsoft.com... > > Hi > > > > Ok here is the situation.... > > > > I have a .vbs login script in the user portion of group policy object that > > maps drives to the user account depending on the groups they are in. > > There's > > no actual problem with the script. It does what it should do however on 2 > > machines it simply will not map the drives. > > > > THe script is written to delete any mapped drive the user may have before > > mapping the drives set out by the script. > > > > On these two machines, the deletion takes place but the mapping does not. > > > > Now here is the odd part. > > > > If I run the script directly on the machine it works fine. If I log in to > > another machine with the same user it works fine so the problem seems to > > be > > specifically with these two computers. > > > > Does anyone have an idea of what could be causing this? > > > > Thanks > > > > Jason > > Here are a couple of suggestions: > - Get the script to pause after mapping the share so that YOU > can see what's going on. > - Post your script so that WE can see what you're doing. > And, of course, remove all "on error" statements from your script! > > Hi Pegasus, thanks for the reply. I am testing the script with the pauses you suggested but while I do that, here is the script I am using. '----------------------------------------------------------------- 'DELETES NETWORKED DRIVES THE USER MAY HAVE SET UP. '----------------------------------------------------------------- Next Set objNetwork = CreateObject("Wscript.Network") Set colDrives = objNetwork.EnumNetworkDrives For i = 0 to colDrives.Count-1 Step 2 objNetwork.RemoveNetworkDrive colDrives.Item(i) Next '----------------------------------------------------------------- 'MAPS TO THE SECURE USER FOLDER BASED ON THE USERNAME '----------------------------------------------------------------- Set objSysInfo = CreateObject("ADSystemInfo") strUser = objSysInfo.UserName Set objUser = GetObject("LDAP://" & strUser) strUserName = objUser.samAccountName strOUPath = objUser.Parent arrContainers = Split(strOUPath, ",") arrOU = Split(arrContainers(0), "=") strOU = arrOU(1) strDrive = "\\server02\Secure Folder - "& strUserName Set objNetwork = CreateObject("Wscript.Network") objNetwork.MapNetworkDrive "A:", strDrive '----------------------------------------------------------------- 'MAPS THE GROUP DRIVES '----------------------------------------------------------------- Set objSysInfo = CreateObject("ADSystemInfo") Set objNetwork = CreateObject("Wscript.Network") strUserPath = "LDAP://" & objSysInfo.UserName Set objUser = GetObject(strUserPath) For Each strGroup in objUser.MemberOf strGroupPath = "LDAP://" & strGroup Set objGroup = GetObject(strGroupPath) strGroupName = objGroup.CN Select Case strGroupName Case "mycompany Staff" objNetwork.MapNetworkDrive "G:", "\\SERVER02\mycompany General Shared Drive" Case "Domain Admins" objNetwork.MapNetworkDrive "Y:", "\\SERVER02\Network Administrator" objNetwork.MapNetworkDrive "W:", "\\Server02\f$" Case "mycompany Finance Staff" objNetwork.MapNetworkDrive "T:", "\\SERVER02\Finance" objNetwork.MapNetworkDrive "X:", "\\SERVER02\Sage" Case "mycompany Sales Staff" objNetwork.MapNetworkDrive "U:", "\\SERVER02\Sales & Marketing" Case "mycompany HR & Compliance staff" objNetwork.MapNetworkDrive "S:", "\\SERVER02\Company Secretary" objNetwork.MapNetworkDrive "R:", "\\SERVER02\Compliance" objNetwork.MapNetworkDrive "Q:", "\\SERVER02\Human Resources" objNetwork.MapNetworkDrive "P:", "\\SERVER02\mycompany Board" objNetwork.MapNetworkDrive "O:", "\\SERVER02\Operations" objNetwork.MapNetworkDrive "N:", "\\SERVER02\Audit Comittee" Case "mycompany Board Staff" objNetwork.MapNetworkDrive "V:", "\\SERVER02\mycompany Board" objNetwork.MapNetworkDrive "M:", "\\SERVER02\Audit Comittee" Case "mycompany Affiliate Staff" objNetwork.MapNetworkDrive "L:", "\\SERVER02\Affiliates" Case "Sage" objNetwork.MapNetworkDrive "X:", "\\SERVER02\Sage" Case "mycompany legal Staff" objNetwork.MapNetworkDrive "K:", "\\SERVER02\Legal" Case "Rael" objNetwork.MapNetworkDrive "T:", "\\SERVER02\Finance" Case "Paul" objNetwork.MapNetworkDrive "E:", "\\Server02\mycompany General Shared Drive\site_enhancements\WebsiteImages" End Select Next
Guest Jason Posted June 25, 2008 Posted June 25, 2008 Re: Map Drive Login Script Issue Ignore the first Next in the script, that is a bad copy and paste job! "Jason" wrote: > > > "Pegasus (MVP)" wrote: > > > > > "Jason" <Jason@discussions.microsoft.com> wrote in message > > news:171E6217-5AEA-42F9-8156-81E46510D4BC@microsoft.com... > > > Hi > > > > > > Ok here is the situation.... > > > > > > I have a .vbs login script in the user portion of group policy object that > > > maps drives to the user account depending on the groups they are in. > > > There's > > > no actual problem with the script. It does what it should do however on 2 > > > machines it simply will not map the drives. > > > > > > THe script is written to delete any mapped drive the user may have before > > > mapping the drives set out by the script. > > > > > > On these two machines, the deletion takes place but the mapping does not. > > > > > > Now here is the odd part. > > > > > > If I run the script directly on the machine it works fine. If I log in to > > > another machine with the same user it works fine so the problem seems to > > > be > > > specifically with these two computers. > > > > > > Does anyone have an idea of what could be causing this? > > > > > > Thanks > > > > > > Jason > > > > Here are a couple of suggestions: > > - Get the script to pause after mapping the share so that YOU > > can see what's going on. > > - Post your script so that WE can see what you're doing. > > And, of course, remove all "on error" statements from your script! > > > > > > Hi Pegasus, thanks for the reply. I am testing the script with the pauses > you suggested but while I do that, here is the script I am using. > > '----------------------------------------------------------------- > 'DELETES NETWORKED DRIVES THE USER MAY HAVE SET UP. > '----------------------------------------------------------------- > > Next > > Set objNetwork = CreateObject("Wscript.Network") > > Set colDrives = objNetwork.EnumNetworkDrives > > For i = 0 to colDrives.Count-1 Step 2 > objNetwork.RemoveNetworkDrive colDrives.Item(i) > > > Next > > '----------------------------------------------------------------- > 'MAPS TO THE SECURE USER FOLDER BASED ON THE USERNAME > '----------------------------------------------------------------- > > Set objSysInfo = CreateObject("ADSystemInfo") > > strUser = objSysInfo.UserName > Set objUser = GetObject("LDAP://" & strUser) > > strUserName = objUser.samAccountName > > strOUPath = objUser.Parent > arrContainers = Split(strOUPath, ",") > arrOU = Split(arrContainers(0), "=") > strOU = arrOU(1) > > strDrive = "\\server02\Secure Folder - "& strUserName > > Set objNetwork = CreateObject("Wscript.Network") > objNetwork.MapNetworkDrive "A:", strDrive > > > '----------------------------------------------------------------- > 'MAPS THE GROUP DRIVES > '----------------------------------------------------------------- > > Set objSysInfo = CreateObject("ADSystemInfo") > Set objNetwork = CreateObject("Wscript.Network") > > strUserPath = "LDAP://" & objSysInfo.UserName > Set objUser = GetObject(strUserPath) > > For Each strGroup in objUser.MemberOf > strGroupPath = "LDAP://" & strGroup > Set objGroup = GetObject(strGroupPath) > strGroupName = objGroup.CN > > Select Case strGroupName > > Case "mycompany Staff" > objNetwork.MapNetworkDrive "G:", "\\SERVER02\mycompany General > Shared Drive" > > > Case "Domain Admins" > objNetwork.MapNetworkDrive "Y:", "\\SERVER02\Network > Administrator" > objNetwork.MapNetworkDrive "W:", "\\Server02\f$" > > > Case "mycompany Finance Staff" > objNetwork.MapNetworkDrive "T:", "\\SERVER02\Finance" > objNetwork.MapNetworkDrive "X:", "\\SERVER02\Sage" > > Case "mycompany Sales Staff" > objNetwork.MapNetworkDrive "U:", "\\SERVER02\Sales & Marketing" > > Case "mycompany HR & Compliance staff" > objNetwork.MapNetworkDrive "S:", "\\SERVER02\Company Secretary" > objNetwork.MapNetworkDrive "R:", "\\SERVER02\Compliance" > objNetwork.MapNetworkDrive "Q:", "\\SERVER02\Human Resources" > objNetwork.MapNetworkDrive "P:", "\\SERVER02\mycompany Board" > objNetwork.MapNetworkDrive "O:", "\\SERVER02\Operations" > objNetwork.MapNetworkDrive "N:", "\\SERVER02\Audit Comittee" > > Case "mycompany Board Staff" > objNetwork.MapNetworkDrive "V:", "\\SERVER02\mycompany Board" > objNetwork.MapNetworkDrive "M:", "\\SERVER02\Audit Comittee" > > Case "mycompany Affiliate Staff" > objNetwork.MapNetworkDrive "L:", "\\SERVER02\Affiliates" > > Case "Sage" > objNetwork.MapNetworkDrive "X:", "\\SERVER02\Sage" > > Case "mycompany legal Staff" > objNetwork.MapNetworkDrive "K:", "\\SERVER02\Legal" > > Case "Rael" > objNetwork.MapNetworkDrive "T:", "\\SERVER02\Finance" > > Case "Paul" > objNetwork.MapNetworkDrive "E:", "\\Server02\mycompany General > Shared Drive\site_enhancements\WebsiteImages" > > > End Select > Next > >
Guest Richard Mueller [MVP] Posted June 25, 2008 Posted June 25, 2008 Re: Map Drive Login Script Issue "Jason" <Jason@discussions.microsoft.com> wrote in message news:371E5FDA-E238-490F-A44F-479A42E35E34@microsoft.com... > > > "Pegasus (MVP)" wrote: > >> >> "Jason" <Jason@discussions.microsoft.com> wrote in message >> news:171E6217-5AEA-42F9-8156-81E46510D4BC@microsoft.com... >> > Hi >> > >> > Ok here is the situation.... >> > >> > I have a .vbs login script in the user portion of group policy object >> > that >> > maps drives to the user account depending on the groups they are in. >> > There's >> > no actual problem with the script. It does what it should do however on >> > 2 >> > machines it simply will not map the drives. >> > >> > THe script is written to delete any mapped drive the user may have >> > before >> > mapping the drives set out by the script. >> > >> > On these two machines, the deletion takes place but the mapping does >> > not. >> > >> > Now here is the odd part. >> > >> > If I run the script directly on the machine it works fine. If I log in >> > to >> > another machine with the same user it works fine so the problem seems >> > to >> > be >> > specifically with these two computers. >> > >> > Does anyone have an idea of what could be causing this? >> > >> > Thanks >> > >> > Jason >> >> Here are a couple of suggestions: >> - Get the script to pause after mapping the share so that YOU >> can see what's going on. >> - Post your script so that WE can see what you're doing. >> And, of course, remove all "on error" statements from your script! >> >> > > Hi Pegasus, thanks for the reply. I am testing the script with the pauses > you suggested but while I do that, here is the script I am using. > > '----------------------------------------------------------------- > 'DELETES NETWORKED DRIVES THE USER MAY HAVE SET UP. > '----------------------------------------------------------------- > > Next > > Set objNetwork = CreateObject("Wscript.Network") > > Set colDrives = objNetwork.EnumNetworkDrives > > For i = 0 to colDrives.Count-1 Step 2 > objNetwork.RemoveNetworkDrive colDrives.Item(i) > > > Next > > '----------------------------------------------------------------- > 'MAPS TO THE SECURE USER FOLDER BASED ON THE USERNAME > '----------------------------------------------------------------- > > Set objSysInfo = CreateObject("ADSystemInfo") > > strUser = objSysInfo.UserName > Set objUser = GetObject("LDAP://" & strUser) > > strUserName = objUser.samAccountName > > strOUPath = objUser.Parent > arrContainers = Split(strOUPath, ",") > arrOU = Split(arrContainers(0), "=") > strOU = arrOU(1) > > strDrive = "\\server02\Secure Folder - "& strUserName > > Set objNetwork = CreateObject("Wscript.Network") > objNetwork.MapNetworkDrive "A:", strDrive > > > '----------------------------------------------------------------- > 'MAPS THE GROUP DRIVES > '----------------------------------------------------------------- > > Set objSysInfo = CreateObject("ADSystemInfo") > Set objNetwork = CreateObject("Wscript.Network") > > strUserPath = "LDAP://" & objSysInfo.UserName > Set objUser = GetObject(strUserPath) > > For Each strGroup in objUser.MemberOf > strGroupPath = "LDAP://" & strGroup > Set objGroup = GetObject(strGroupPath) > strGroupName = objGroup.CN > > Select Case strGroupName > > Case "mycompany Staff" > objNetwork.MapNetworkDrive "G:", "\\SERVER02\mycompany General > Shared Drive" > > > Case "Domain Admins" > objNetwork.MapNetworkDrive "Y:", "\\SERVER02\Network > Administrator" > objNetwork.MapNetworkDrive "W:", "\\Server02\f$" > > > Case "mycompany Finance Staff" > objNetwork.MapNetworkDrive "T:", "\\SERVER02\Finance" > objNetwork.MapNetworkDrive "X:", "\\SERVER02\Sage" > > Case "mycompany Sales Staff" > objNetwork.MapNetworkDrive "U:", "\\SERVER02\Sales & Marketing" > > Case "mycompany HR & Compliance staff" > objNetwork.MapNetworkDrive "S:", "\\SERVER02\Company Secretary" > objNetwork.MapNetworkDrive "R:", "\\SERVER02\Compliance" > objNetwork.MapNetworkDrive "Q:", "\\SERVER02\Human Resources" > objNetwork.MapNetworkDrive "P:", "\\SERVER02\mycompany Board" > objNetwork.MapNetworkDrive "O:", "\\SERVER02\Operations" > objNetwork.MapNetworkDrive "N:", "\\SERVER02\Audit Comittee" > > Case "mycompany Board Staff" > objNetwork.MapNetworkDrive "V:", "\\SERVER02\mycompany Board" > objNetwork.MapNetworkDrive "M:", "\\SERVER02\Audit Comittee" > > Case "mycompany Affiliate Staff" > objNetwork.MapNetworkDrive "L:", "\\SERVER02\Affiliates" > > Case "Sage" > objNetwork.MapNetworkDrive "X:", "\\SERVER02\Sage" > > Case "mycompany legal Staff" > objNetwork.MapNetworkDrive "K:", "\\SERVER02\Legal" > > Case "Rael" > objNetwork.MapNetworkDrive "T:", "\\SERVER02\Finance" > > Case "Paul" > objNetwork.MapNetworkDrive "E:", "\\Server02\mycompany General > Shared Drive\site_enhancements\WebsiteImages" > > > End Select > Next > > There seems to a problem that halts the script after the code the removes the mappings. A potential problem is that memberOf may not be a collection in the "For Each" loop. This happens if the user is a member of less than two groups (not counting the "primary" group, which is usually "Domain Users"). An error is raised if the user is a member of no groups or one group (besides "Domain Users"). I would suggest something similar to: =========== On Error Resume Next arrGroups = objUser.GetEx("memberOf") If (Err.Number = 0) Then On Error GoTo 0 For Each strGroup In arrGroups ' Code for each group. ' ... Next End If On Error GoTo 0 ======== For more on this, see this link: http://www.rlmueller.net/MemberOf.htm Actually, since you bind to each group object, you may as well use the Groups method of the user object and avoid the complications. For example, I would suggest: For each objGroup in objUser.Groups Select Case objGroup.cn Case "staff" ' ... Case "Domain Admins" ' ... End Select Next ==== If you are not using strOU, I would remove the code that determines the value of this. That code looks OK, but is not fool proof. -- Richard Mueller MVP Directory Services Hilltop Lab - http://www.rlmueller.net --
Guest Jason Posted June 25, 2008 Posted June 25, 2008 Re: Map Drive Login Script Issue "Richard Mueller [MVP]" wrote: > > "Jason" <Jason@discussions.microsoft.com> wrote in message > news:371E5FDA-E238-490F-A44F-479A42E35E34@microsoft.com... > > > > > > "Pegasus (MVP)" wrote: > > > >> > >> "Jason" <Jason@discussions.microsoft.com> wrote in message > >> news:171E6217-5AEA-42F9-8156-81E46510D4BC@microsoft.com... > >> > Hi > >> > > >> > Ok here is the situation.... > >> > > >> > I have a .vbs login script in the user portion of group policy object > >> > that > >> > maps drives to the user account depending on the groups they are in. > >> > There's > >> > no actual problem with the script. It does what it should do however on > >> > 2 > >> > machines it simply will not map the drives. > >> > > >> > THe script is written to delete any mapped drive the user may have > >> > before > >> > mapping the drives set out by the script. > >> > > >> > On these two machines, the deletion takes place but the mapping does > >> > not. > >> > > >> > Now here is the odd part. > >> > > >> > If I run the script directly on the machine it works fine. If I log in > >> > to > >> > another machine with the same user it works fine so the problem seems > >> > to > >> > be > >> > specifically with these two computers. > >> > > >> > Does anyone have an idea of what could be causing this? > >> > > >> > Thanks > >> > > >> > Jason > >> > >> Here are a couple of suggestions: > >> - Get the script to pause after mapping the share so that YOU > >> can see what's going on. > >> - Post your script so that WE can see what you're doing. > >> And, of course, remove all "on error" statements from your script! > >> > >> > > > > Hi Pegasus, thanks for the reply. I am testing the script with the pauses > > you suggested but while I do that, here is the script I am using. > > > > '----------------------------------------------------------------- > > 'DELETES NETWORKED DRIVES THE USER MAY HAVE SET UP. > > '----------------------------------------------------------------- > > > > Next > > > > Set objNetwork = CreateObject("Wscript.Network") > > > > Set colDrives = objNetwork.EnumNetworkDrives > > > > For i = 0 to colDrives.Count-1 Step 2 > > objNetwork.RemoveNetworkDrive colDrives.Item(i) > > > > > > Next > > > > '----------------------------------------------------------------- > > 'MAPS TO THE SECURE USER FOLDER BASED ON THE USERNAME > > '----------------------------------------------------------------- > > > > Set objSysInfo = CreateObject("ADSystemInfo") > > > > strUser = objSysInfo.UserName > > Set objUser = GetObject("LDAP://" & strUser) > > > > strUserName = objUser.samAccountName > > > > strOUPath = objUser.Parent > > arrContainers = Split(strOUPath, ",") > > arrOU = Split(arrContainers(0), "=") > > strOU = arrOU(1) > > > > strDrive = "\\server02\Secure Folder - "& strUserName > > > > Set objNetwork = CreateObject("Wscript.Network") > > objNetwork.MapNetworkDrive "A:", strDrive > > > > > > '----------------------------------------------------------------- > > 'MAPS THE GROUP DRIVES > > '----------------------------------------------------------------- > > > > Set objSysInfo = CreateObject("ADSystemInfo") > > Set objNetwork = CreateObject("Wscript.Network") > > > > strUserPath = "LDAP://" & objSysInfo.UserName > > Set objUser = GetObject(strUserPath) > > > > For Each strGroup in objUser.MemberOf > > strGroupPath = "LDAP://" & strGroup > > Set objGroup = GetObject(strGroupPath) > > strGroupName = objGroup.CN > > > > Select Case strGroupName > > > > Case "mycompany Staff" > > objNetwork.MapNetworkDrive "G:", "\\SERVER02\mycompany General > > Shared Drive" > > > > > > Case "Domain Admins" > > objNetwork.MapNetworkDrive "Y:", "\\SERVER02\Network > > Administrator" > > objNetwork.MapNetworkDrive "W:", "\\Server02\f$" > > > > > > Case "mycompany Finance Staff" > > objNetwork.MapNetworkDrive "T:", "\\SERVER02\Finance" > > objNetwork.MapNetworkDrive "X:", "\\SERVER02\Sage" > > > > Case "mycompany Sales Staff" > > objNetwork.MapNetworkDrive "U:", "\\SERVER02\Sales & Marketing" > > > > Case "mycompany HR & Compliance staff" > > objNetwork.MapNetworkDrive "S:", "\\SERVER02\Company Secretary" > > objNetwork.MapNetworkDrive "R:", "\\SERVER02\Compliance" > > objNetwork.MapNetworkDrive "Q:", "\\SERVER02\Human Resources" > > objNetwork.MapNetworkDrive "P:", "\\SERVER02\mycompany Board" > > objNetwork.MapNetworkDrive "O:", "\\SERVER02\Operations" > > objNetwork.MapNetworkDrive "N:", "\\SERVER02\Audit Comittee" > > > > Case "mycompany Board Staff" > > objNetwork.MapNetworkDrive "V:", "\\SERVER02\mycompany Board" > > objNetwork.MapNetworkDrive "M:", "\\SERVER02\Audit Comittee" > > > > Case "mycompany Affiliate Staff" > > objNetwork.MapNetworkDrive "L:", "\\SERVER02\Affiliates" > > > > Case "Sage" > > objNetwork.MapNetworkDrive "X:", "\\SERVER02\Sage" > > > > Case "mycompany legal Staff" > > objNetwork.MapNetworkDrive "K:", "\\SERVER02\Legal" > > > > Case "Rael" > > objNetwork.MapNetworkDrive "T:", "\\SERVER02\Finance" > > > > Case "Paul" > > objNetwork.MapNetworkDrive "E:", "\\Server02\mycompany General > > Shared Drive\site_enhancements\WebsiteImages" > > > > > > End Select > > Next > > > > > > There seems to a problem that halts the script after the code the removes > the mappings. A potential problem is that memberOf may not be a collection > in the "For Each" loop. This happens if the user is a member of less than > two groups (not counting the "primary" group, which is usually "Domain > Users"). An error is raised if the user is a member of no groups or one > group (besides "Domain Users"). I would suggest something similar to: > =========== > On Error Resume Next > arrGroups = objUser.GetEx("memberOf") > If (Err.Number = 0) Then > On Error GoTo 0 > For Each strGroup In arrGroups > ' Code for each group. > ' ... > Next > End If > On Error GoTo 0 > ======== > For more on this, see this link: > > http://www.rlmueller.net/MemberOf.htm > > Actually, since you bind to each group object, you may as well use the > Groups method of the user object and avoid the complications. For example, I > would suggest: > > For each objGroup in objUser.Groups > Select Case objGroup.cn > Case "staff" > ' ... > Case "Domain Admins" > ' ... > End Select > Next > ==== > If you are not using strOU, I would remove the code that determines the > value of this. That code looks OK, but is not fool proof. > > -- > Richard Mueller > MVP Directory Services > Hilltop Lab - http://www.rlmueller.net > -- > > > How would that explain the fact the script works perfectly when the same user logs on to a different PC. Given the user account is in the same number of groups etc? I am trying your script suggestions as you speak but I'm still puzzled about that it works fine on other machines.
Guest Jason Posted June 25, 2008 Posted June 25, 2008 Re: Map Drive Login Script Issue In addition, after further testing it would appear that script isnt running at all on the machine in question. There are a bunch of scripts in the same GPO which I know are all running fine. I set a MsgBox at the start & end of the Drive Map Script and these were not returned to the screen indicating it didnt run. Baffled! :(
Guest Richard Mueller [MVP] Posted June 25, 2008 Posted June 25, 2008 Re: Map Drive Login Script Issue "Jason" <Jason@discussions.microsoft.com> wrote in message news:61179FBD-E37E-4489-8AEA-A43E5C99B148@microsoft.com... > .... > > How would that explain the fact the script works perfectly when the same > user logs on to a different PC. Given the user account is in the same > number > of groups etc? > > I am trying your script suggestions as you speak but I'm still puzzled > about > that it works fine on other machines. You are correct. I assume when you say the script works fine when run on the computer after logon, that you mean when run by the problem user. If it works for all users as a logon script on one computer, works for some but not all users as a logon script a problem computer, and works for all on the problem computer after logon, then the only thing I can think of is a timing issue (which doesn't seem likely). I also assume the same script is used in all cases (I note that the group name comparisions are case sensitive, for example). If you do not have "On Error Resume Next" you should either see an error message (which will indicate the line number in the script telling you exactly which statement raised the error), or the script has run as if the user is not a member of any of the specified groups. For testing I would reduce the script to just what is necessary. Perhaps (I added comments, also watch for line wrapping): ========== Option Explicit ' I use Option Explicit and declare all variables ' to make troubleshooting easier. Dim objNetwork, colDrives, i Dim objSysInfo, objUser, strUser, strUserName Dim strDrive, objGroup, strGroupName Set objNetwork = CreateObject("Wscript.Network") Set colDrives = objNetwork.EnumNetworkDrives ' Technically, you should enumerate from 0 to count less 2. For i = 0 to colDrives.Count - 2 Step 2 ' Remove even if mapping is in use and even if persistent. objNetwork.RemoveNetworkDrive colDrives.Item(i), True, True Next ' Temporary message. Call MsgBox("Existing mappings removed") ' Note that this will fail if user is not authenticated to a domain. Set objSysInfo = CreateObject("ADSystemInfo") strUser = objSysInfo.UserName Set objUser = GetObject("LDAP://" & strUser) strUserName = objUser.sAMAccountName strDrive = "\\server02\Secure Folder - " & strUserName ' I wonder if this could raise an error, since A: might not be legal. objNetwork.MapNetworkDrive "A:", strDrive ' Temporary message. Call MsgBox("Drive A: mapped") For each objGroup in objUser.Groups ' Make group names case insensitive. strGroupName = LCase(objGroup.cn) ' Temporary message. Call MsgBox("Group: " & strGroupName) Select Case strGroupName Case "mycompany staff" objNetwork.MapNetworkDrive "G:", _ "\\SERVER02\mycompany General Shared Drive" Case "domain admins" objNetwork.MapNetworkDrive "Y:", _ "\\SERVER02\Network Administrator" objNetwork.MapNetworkDrive "W:", "\\Server02\f$" Case "mycompany finance staff" objNetwork.MapNetworkDrive "T:", "\\SERVER02\Finance" objNetwork.MapNetworkDrive "X:", "\\SERVER02\Sage" Case "mycompany sales staff" objNetwork.MapNetworkDrive "U:", "\\SERVER02\Sales & Marketing" Case "mycompany hr & compliance staff" objNetwork.MapNetworkDrive "S:", "\\SERVER02\Company Secretary" objNetwork.MapNetworkDrive "R:", "\\SERVER02\Compliance" objNetwork.MapNetworkDrive "Q:", "\\SERVER02\Human Resources" objNetwork.MapNetworkDrive "P:", "\\SERVER02\mycompany Board" objNetwork.MapNetworkDrive "O:", "\\SERVER02\Operations" objNetwork.MapNetworkDrive "N:", "\\SERVER02\Audit Comittee" Case "mycompany Board Staff" objNetwork.MapNetworkDrive "V:", "\\SERVER02\mycompany Board" objNetwork.MapNetworkDrive "M:", "\\SERVER02\Audit Comittee" Case "mycompany Affiliate Staff" objNetwork.MapNetworkDrive "L:", "\\SERVER02\Affiliates" Case "Sage" objNetwork.MapNetworkDrive "X:", "\\SERVER02\Sage" Case "mycompany legal Staff" objNetwork.MapNetworkDrive "K:", "\\SERVER02\Legal" Case "Rael" objNetwork.MapNetworkDrive "T:", "\\SERVER02\Finance" Case "Paul" objNetwork.MapNetworkDrive "E:", _ "\\Server02\mycompany General Shared Drive\site_enhancements\WebsiteImages" End Select Next ' Temporary message. Call MsgBox("Done") ======== And of course do not use "On Error Resume Next". If any of the paths are not found, an error should be raised when they attempt to map to it. Possibly, the UNC path is not available from some computers (or the user lacks permission), but I would expect the same problem after logon (assuming the same user runs the script). -- Richard Mueller MVP Directory Services Hilltop Lab - http://www.rlmueller.net --
Guest Richard Mueller [MVP] Posted June 25, 2008 Posted June 25, 2008 Re: Map Drive Login Script Issue "Jason" <Jason@discussions.microsoft.com> wrote in message news:E08F0800-45A6-4204-8C34-0B959F0F5436@microsoft.com... > In addition, after further testing it would appear that script isnt > running > at all on the machine in question. There are a bunch of scripts in the > same > GPO which I know are all running fine. > > I set a MsgBox at the start & end of the Drive Map Script and these were > not > returned to the screen indicating it didnt run. > > Baffled! :( This helps a great deal. We know the problem is probably not in the script. For some reason the policy is not being applied to these users on the problem computers. -- Richard Mueller MVP Directory Services Hilltop Lab - http://www.rlmueller.net --
Guest Jason Posted June 26, 2008 Posted June 26, 2008 Re: Map Drive Login Script Issue "Richard Mueller [MVP]" wrote: > > "Jason" <Jason@discussions.microsoft.com> wrote in message > news:61179FBD-E37E-4489-8AEA-A43E5C99B148@microsoft.com... > > > .... > > > > > How would that explain the fact the script works perfectly when the same > > user logs on to a different PC. Given the user account is in the same > > number > > of groups etc? > > > > I am trying your script suggestions as you speak but I'm still puzzled > > about > > that it works fine on other machines. > > You are correct. I assume when you say the script works fine when run on the > computer after logon, that you mean when run by the problem user. If it > works for all users as a logon script on one computer, works for some but > not all users as a logon script a problem computer, and works for all on the > problem computer after logon, then the only thing I can think of is a timing > issue (which doesn't seem likely). I also assume the same script is used in > all cases (I note that the group name comparisions are case sensitive, for > example). > > If you do not have "On Error Resume Next" you should either see an error > message (which will indicate the line number in the script telling you > exactly which statement raised the error), or the script has run as if the > user is not a member of any of the specified groups. For testing I would > reduce the script to just what is necessary. Perhaps (I added comments, also > watch for line wrapping): > ========== > ======== > And of course do not use "On Error Resume Next". If any of the paths are not > found, an error should be raised when they attempt to map to it. Possibly, > the UNC path is not available from some computers (or the user lacks > permission), but I would expect the same problem after logon (assuming the > same user runs the script). > > -- > Richard Mueller > MVP Directory Services > Hilltop Lab - http://www.rlmueller.net > -- > Ok the issue has been resolved. To be honset, I'm unable to say what caused the issue but my fix works and at the moment that's all that matters. Basically I have a number of scripts that run. I have a main one that does many things and a few others. The drive map script was a seperate script. After much testing, I eventually added the code of the drive map script to the end of the main script and for some reason it worked on the two machines that had problems. so... /shrug... thanks for all the help though. Jason
Recommended Posts