Jump to content

Map Drive Login Script Issue


Recommended Posts

Guest Jason
Posted

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

  • Replies 9
  • Created
  • Last Reply
Guest Pegasus \(MVP\)
Posted

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

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

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

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

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

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

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

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

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


×
×
  • Create New...