Solved

Need VBS logon script to map drives and printers by user group

Posted on 2004-05-02
10
45,466 Views
Last Modified: 2012-05-04
Hello,
First I am not a formal IT manager or network administrator, but in our company I am the most computer literate so I have been given the task of setting up our network.

I have read almost every post to this site regarding logon scripts, I have been able to implement several and at one time thought I had compiled enough snippets of code found here and other places to do exactly what I needed, well in short it didn’t work like it was suppose to. It worked but not by user groups.

Here is a little info about or environment.
We are on a domain let’s call it domain.local
Our Server is SBS 2003 Premium (I will be adding a second 2003 Standard Server soon)
We have 15 Client PC's all either XP or 2000 with current service packs.
20 or so users, all users with roaming profiles.
All users are given local Administrative rights due to some software requirements.  This is done on each client PC in the local policy.
Im sure there is a way around this possibley to start the program with runas\user but I will tackle that later unless it is absolutly relevant
to this request.

6 Security Groups I have created and distributed to users to use the log on script I am trying to create.

Administrators
Managers
Accounting
Design
Design East (for mapping printers only)
Design West (for mapping printers only)

Before I go any further I am wanting this in VB, I don’t want to use Kixart or Bat files unless this just can’t be done in VB script but i am pretty sure it can.

What I am wanting is a logon script to do the following
_______________________________________________________

1. Clear the below drive letters if already mapped

2. Map drives per group
 a. The first group could be all domain users
 Map Drive F to \\server\public
 Map Drive G to \\server\Office Documents

 b. The second group Administrators
 Map Drive H to \\Server\admin tools
 Map Drive I to \\Server\all shares

 c. The third group Managers
 Map Drive J to \\Server\Managers
 Map Drive L to \\Server\Customers

 d. The fourth group Accounting
 Map Drive K to \\Server\Accounting
 Map Drive L to \\Server\Customers

 e. The fifth group Design
 Map Drive M to \\Server\Drawings
 Map Drive N to \\Server\Forms

3. I would also like it to map to the logged in users folder.
 Map Drive Z to \\server\users\%username

4. Map Printers by group
 a. Group Accounting
 Connect Printer1 \\server\acounting
 Connect Printer2 \\ server\invoice printer
 Connect Printer3 \\ server\check printer
 Set printer 1 as default

 b. Group Design East
 Connect Printer1 \\server\Design East
 Connect Printer2 \\ server\Plotter
 Set printer 1 as default


 c. Group Design West
 Connect Printer1 \\server\Design West
 Connect Printer2 \\ server\Plotter
 Set printer 1 as default

By defaults SBS sets up all users to use
SBS_LOGIN_SCRIPT.bat

it contains the following.
\\SERVER\Clients\Setup\setup.exe /s SERVER

Can this VB script be referenced by this batch file or can this line be added to the new VB script and then I change users to use the new logon.vbs file instead of SBS_LOGIN_SCRIPT.bat
___________________________________________________________

Please give specific instructions in simplistic terms
I would prefer you just write the code for copy/edit/paste, i've already spent way to much time on it.

Thank you
0
Comment
Question by:tm9
10 Comments
 
LVL 40

Expert Comment

by:Fatal_Exception
Comment Utility
I really don't have time to research the script, but I will suggest that the command you will need to implement here is the ifmember command, used in scripts to query the group memberships...  I don't expect any points to be awarded for this, but it may help...  :)

Ifmember.exe

http://www.microsoft.com/windows2000/techinfo/reskit/tools/new/ifmember-o.asp
0
 
LVL 7

Expert Comment

by:rhrowson
Comment Utility
Kix has the facilities you ewant and has been desighned for this sort of thing. Thew command syntax is a damned site easier than a lot of things I have used. For help, do a Google search for Kix scripts
0
 
LVL 20

Expert Comment

by:What90
Comment Utility
Here's some others VB scripts and how they piece them together


Read though the link and try these:

http://www.experts-exchange.com/Operating_Systems/Windows_Server_2003/Q_20922065.html
http://www.experts-exchange.com/Hardware/Printers/Q_20623076.html
0
 

Author Comment

by:tm9
Comment Utility

I was aware of both, like I said earlier I have read every post on this site
regarding log on scripts. Ive also googled it to death.
I think it must be something simple, or maybe I am just a little to dense to get it.

Anyways below is what I have so far, It all works except for not by group
all users, regardless of what group they belong to get All drives mapped.
That doesent mean they have permissions but they are mapped.

My script logon.vbs is here \\Server\netlogon

Also in that folder are these 2 files
con2prt.exe
IFMEMBER.EXE

_______________________logon.vbs__________________________
on error resume next
Dim WshNetwork
Set WshNetwork = CreateObject("WScript.Network")

If IsMember(WshNetwork.username, "Domain Admin") Then
wshnetwork.MapNetworkDrive "m:", "\\Server\Office Documents"
wshnetwork.MapNetworkDrive "n:", "\\Server\Admin Tools"
wshnetwork.MapNetworkDrive "o:", "\\Server\Ghost Images"
wshnetwork.MapNetworkDrive "p:", "\\Server\Job Pictures"

If IsMember(WshNetwork.username, "Domain Users") Then
wshnetwork.MapNetworkDrive "m:", "\\Server\Office Documents"
wshnetwork.MapNetworkDrive "p:", "\\Server\Job Pictures"
wshnetwork.MapNetworkDrive "r:", "\\Server\Drawings"
End If

If IsMember(WshNetwork.username, "Domain Admin") Then
PrinterPath = "\\server\chris"
PrinterPath2 = "\\server\lazerjet"
WshNetwork.AddWindowsPrinterConnection PrinterPath
WshNetwork.SetDefaultPrinter PrinterPath2
End If

Shell ("\\SERVER\Clients\Setup\setup.exe /s SERVER")

________________________________________________________

The drives map to all users regardless of group membership.
Printers all map regardless of membership.

I dont know if the Shell line is valid or not.

If I could get this example to work by group I could edit it to add
my 6 groups mentioned in origional post.

Thanks again.
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Author Comment

by:tm9
Comment Utility
Ok, I have scapped the above scripts and have the below working,
I would like this script to check each users membership in the groups and map drives or printers for multiple memberships.
At present if you belong to the Admin group it stops there.

I will award the points to anyone that can solve that.

Much kudos to Guy Thomas http://computerperformance.co.uk/
where i found most of the code below.

'------------------------logon.vbs--------------------------------
Option Explicit
Dim objNetwork, objUser, CurrentUser
Dim strGroup

Const Admin_Group = "cn=oly_users_admin"
Const Managers_Group = "cn=oly_users_manager"
Const Accounting_Group = "oly_users_accounting"
Const Estimate_Group = "cn=oly_users_estimate"
Const Design_East_Group = "cn=oly_design_east"
Const Design_West_Group = "cn=oly_design_west"
Const All_Users_Group = "cn=oly_users_all"

Set objNetwork = CreateObject("WScript.Network")
' Forces script to skip errors (rem below line to see errors)
on error resume next

Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
' Set all drives to be removed here.
WshNetwork.RemoveNetworkDrive "m:"
WshNetwork.RemoveNetworkDrive "n:"
WshNetwork.RemoveNetworkDrive "o:"
WshNetwork.RemoveNetworkDrive "p:"
WshNetwork.RemoveNetworkDrive "q:"
WshNetwork.RemoveNetworkDrive "r:"
WshNetwork.RemoveNetworkDrive "s:"
WshNetwork.RemoveNetworkDrive "t:"
WshNetwork.RemoveNetworkDrive "u:"
WshNetwork.RemoveNetworkDrive "v:"
WshNetwork.RemoveNetworkDrive "w:"
WshNetwork.RemoveNetworkDrive "x:"
WshNetwork.RemoveNetworkDrive "y:"
WshNetwork.RemoveNetworkDrive "z:"

Set objUser = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & objUser.UserName)
strGroup = LCase(Join(CurrentUser.MemberOf))

If InStr(strGroup, Admin_Group) Then
WScript.Echo "You are logged into the Admin Group "
 objNetwork.MapNetworkDrive "m:", "\\olysbs\slg shared "
 objNetwork.MapNetworkDrive "n:", "\\server\drawings"
 objNetwork.MapNetworkDrive "o:", "\\olysbs\job costing"
 objNetwork.MapNetworkDrive "p:", "\\olysbs\slg"
 objNetwork.MapNetworkDrive "q:", "\\server\catalouges"
 objNetwork.MapNetworkDrive "r:", "\\server\job photos"
 objNetwork.MapNetworkDrive "s:", "\\server\slic"
 objNetwork.MapNetworkDrive "t:", "\\olysbs\office documents"
 objNetwork.MapNetworkDrive "u:", "\\olysbs\hr"
 objNetwork.MapNetworkDrive "v:", "\\olysbs\manager"
 objNetwork.MapNetworkDrive "w:", "\\olysbs\accounting"
 objNetwork.MapNetworkDrive "x:", "\\server\sprink slick"
 objNetwork.MapNetworkDrive "y:", "\\server\public"
 objNetwork.MapNetworkDrive "z:", "\\olysbs\Users\" _
 & objNetwork.UserName

 
Dim net
Set net = CreateObject("WScript.Network")
net.AddWindowsPrinterConnection "\\olysbs\chris", "Chris's Printer"
net.AddWindowsPrinterConnection "\\olysbs\frank", "Frank's Printer"
net.AddWindowsPrinterConnection "\\olysbs\shop", "Shop Printer"
net.AddWindowsPrinterConnection "\\olysbs\11x17", "11x17 Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice1", "Main Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice2", "BU Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\office", "Main Office Printer"
net.AddWindowsPrinterConnection "\\server\design east", "Design East"
net.AddWindowsPrinterConnection "\\server\design east", "Design West"
net.AddWindowsPrinterConnection "\\server\lee", "Lee's Printer"
'Removed the below line because if I log into another users workstation it set this as default printer for them if one is not set
'net.SetDefaultPrinter "\\olysbs\chris"
 
 
 
 
ElseIf InStr(strGroup, Managers_Group) Then
WScript.Echo " You are logged into the Managers Group "
 objNetwork.MapNetworkDrive "m:", "\\olysbs\slg shared "
 objNetwork.MapNetworkDrive "o:", "\\olysbs\job costing"
 objNetwork.MapNetworkDrive "q:", "\\server\catalouges"
 objNetwork.MapNetworkDrive "r:", "\\server\job photos"
 objNetwork.MapNetworkDrive "t:", "\\olysbs\office documents"
 objNetwork.MapNetworkDrive "v:", "\\olysbs\manager"
 objNetwork.MapNetworkDrive "y:", "\\server\public"
 objNetwork.MapNetworkDrive "z:", "\\olysbs\Users\" _
 & objNetwork.UserName

 

Set net = CreateObject("WScript.Network")
net.AddWindowsPrinterConnection "\\olysbs\chris", "Chris's Printer"
net.AddWindowsPrinterConnection "\\olysbs\frank", "Frank's Printer"
net.AddWindowsPrinterConnection "\\olysbs\shop", "Shop Printer"
net.AddWindowsPrinterConnection "\\olysbs\11x17", "11x17 Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice1", "Main Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice2", "BU Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\office", "Main Office Printer"
net.AddWindowsPrinterConnection "\\server\design east", "Design East"
net.AddWindowsPrinterConnection "\\server\design east", "Design West"
net.AddWindowsPrinterConnection "\\server\lee", "Lee's Printer"


ElseIf InStr(strGroup, Estimate_Group) Then
WScript.Echo " You are logged into the Estimators Group "
 objNetwork.MapNetworkDrive "m:", "\\olysbs\slg shared "
 objNetwork.MapNetworkDrive "n:", "\\server\drawings"
 objNetwork.MapNetworkDrive "o:", "\\olysbs\job costing"
 objNetwork.MapNetworkDrive "q:", "\\server\catalouges"
 objNetwork.MapNetworkDrive "r:", "\\server\job photos"
 objNetwork.MapNetworkDrive "t:", "\\olysbs\office documents"
 objNetwork.MapNetworkDrive "y:", "\\server\public"
 objNetwork.MapNetworkDrive "z:", "\\olysbs\Users\" _
 & objNetwork.UserName

 

Set net = CreateObject("WScript.Network")
net.AddWindowsPrinterConnection "\\olysbs\chris", "Chris's Printer"
net.AddWindowsPrinterConnection "\\olysbs\frank", "Frank's Printer"
net.AddWindowsPrinterConnection "\\olysbs\shop", "Shop Printer"
net.AddWindowsPrinterConnection "\\olysbs\11x17", "11x17 Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice1", "Main Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice2", "BU Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\office", "Main Office Printer"
net.AddWindowsPrinterConnection "\\server\design east", "Design East"
net.AddWindowsPrinterConnection "\\server\design east", "Design West"
net.AddWindowsPrinterConnection "\\server\lee", "Lee's Printer"

 
 
 
ElseIf InStr(strGroup, Design_East_Group) Then
WScript.Echo "You are logged into the Design East Group " & strGroup
 objNetwork.MapNetworkDrive "n:", "\\server\drawings"
 objNetwork.MapNetworkDrive "q:", "\\server\catalouges"
 objNetwork.MapNetworkDrive "r:", "\\server\job photos"
 objNetwork.MapNetworkDrive "t:", "\\olysbs\office documents"
 objNetwork.MapNetworkDrive "x:", "\\server\sprink slick"
 objNetwork.MapNetworkDrive "y:", "\\server\public"
 objNetwork.MapNetworkDrive "z:", "\\olysbs\Users\" _
 & objNetwork.UserName

 

Set net = CreateObject("WScript.Network")
net.AddWindowsPrinterConnection "\\olysbs\chris", "Chris's Printer"
net.AddWindowsPrinterConnection "\\olysbs\frank", "Frank's Printer"
net.AddWindowsPrinterConnection "\\olysbs\shop", "Shop Printer"
net.AddWindowsPrinterConnection "\\olysbs\11x17", "11x17 Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice1", "Main Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice2", "BU Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\office", "Main Office Printer"
net.AddWindowsPrinterConnection "\\server\design east", "Design East"
net.AddWindowsPrinterConnection "\\server\design east", "Design West"
net.AddWindowsPrinterConnection "\\server\lee", "Lee's Printer"
net.SetDefaultPrinter "\\olysbs\design east"
 
 
ElseIf InStr(strGroup, Design_West_Group) Then
WScript.Echo "You are logged into the Design West Group " & strGroup
 objNetwork.MapNetworkDrive "n:", "\\server\drawings"
 objNetwork.MapNetworkDrive "q:", "\\server\catalouges"
 objNetwork.MapNetworkDrive "r:", "\\server\job photos"
 objNetwork.MapNetworkDrive "t:", "\\olysbs\office documents"
 objNetwork.MapNetworkDrive "x:", "\\server\sprink slick"
 objNetwork.MapNetworkDrive "y:", "\\server\public"
 objNetwork.MapNetworkDrive "z:", "\\olysbs\Users\" _
 & objNetwork.UserName

 

Set net = CreateObject("WScript.Network")
net.AddWindowsPrinterConnection "\\olysbs\chris", "Chris's Printer"
net.AddWindowsPrinterConnection "\\olysbs\frank", "Frank's Printer"
net.AddWindowsPrinterConnection "\\olysbs\shop", "Shop Printer"
net.AddWindowsPrinterConnection "\\olysbs\11x17", "11x17 Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice1", "Main Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice2", "BU Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\office", "Main Office Printer"
net.AddWindowsPrinterConnection "\\server\design east", "Design East"
net.AddWindowsPrinterConnection "\\server\design east", "Design West"
net.AddWindowsPrinterConnection "\\server\lee", "Lee's Printer"
net.SetDefaultPrinter "\\olysbs\design west"

'Remove rem for shares to all users
'ElseIf InStr(strGroup, All_Users_Group) Then
'WScript.Echo "All Users Group " & strGroup
' objNetwork.MapNetworkDrive "h:", "\\Another Server\Users\" _
' & objNetwork.UserName

End If
Wscript.Echo "Drives & Printers have been mapped for your group "

WScript.Quit
' End of Script.


'Below is only for refference for writing script

'Company Drives
'A Saved for Local
'B Saved for Local
'C Saved for Local
'D Saved for Local
'E Saved for Local
'F Saved for Local
'G Saved for Local
'H Open
'I Open
'J Open
'k Open
'L Open
'M \\olysbs\slg shared
'N \\server\drawings
'O \\olysbs\job costing
'P \\olysbs\slg
'Q \\server\catalouges
'R \\server\job photos
'S \\server\slic
'T \\olysbs\office documents
'U \\olysbs\hr
'V \\olysbs\manager
'W \\olysbs\accounting
'X \\server\sprink slick
'Y \\server\public
'Z \\olysbs\users\%username

'Company Printers
'\\olysbs\chris
'\\olysbs\frank
'\\olysbs\shop
'\\olysbs\main
'\\olysbs\11x17
'\\server\design east
'\\server\design west
'\\server\plotter
'\\server\lee

'---------------------------------end logon.vbs---------------------------
0
 
LVL 53

Expert Comment

by:Dhaest
Comment Utility
It seems like a problem in your if structure..
Now you have something like this:
if Const Admin_Group  ...
elsif Const Managers_Group ...
elseIf Const Accounting_Group ...
...
end if.

It will always run for 1 group only. If you want to make sure it works for every group then you'll have to change your if-structure to :

if Const Admin_Group  ...
end if
if Const Managers_Group  ...
end if
0
 
LVL 53

Expert Comment

by:Dhaest
Comment Utility
There's a lot of overhead in your code....

Option Explicit
Dim objNetwork, objUser, CurrentUser
Dim strGroup

Const Admin_Group = "cn=oly_users_admin"
Const Managers_Group = "cn=oly_users_manager"
Const Accounting_Group = "oly_users_accounting"
Const Estimate_Group = "cn=oly_users_estimate"
Const Design_East_Group = "cn=oly_design_east"
Const Design_West_Group = "cn=oly_design_west"
Const All_Users_Group = "cn=oly_users_all"

Set objNetwork = CreateObject("WScript.Network")
' Forces script to skip errors (rem below line to see errors)
on error resume next

Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
' Set all drives to be removed here.
WshNetwork.RemoveNetworkDrive "m:"
WshNetwork.RemoveNetworkDrive "n:"
WshNetwork.RemoveNetworkDrive "o:"
WshNetwork.RemoveNetworkDrive "p:"
WshNetwork.RemoveNetworkDrive "q:"
WshNetwork.RemoveNetworkDrive "r:"
WshNetwork.RemoveNetworkDrive "s:"
WshNetwork.RemoveNetworkDrive "t:"
WshNetwork.RemoveNetworkDrive "u:"
WshNetwork.RemoveNetworkDrive "v:"
WshNetwork.RemoveNetworkDrive "w:"
WshNetwork.RemoveNetworkDrive "x:"
WshNetwork.RemoveNetworkDrive "y:"
WshNetwork.RemoveNetworkDrive "z:"

Set objUser = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & objUser.UserName)
strGroup = LCase(Join(CurrentUser.MemberOf))

' SETTING ALL NETWORKDRIVES THAT ARE AVAILABLE FOR EVERY USER
objNetwork.MapNetworkDrive "q:", "\\server\catalouges"
 objNetwork.MapNetworkDrive "r:", "\\server\job photos"
 objNetwork.MapNetworkDrive "t:", "\\olysbs\office documents"
 objNetwork.MapNetworkDrive "y:", "\\server\public"
 objNetwork.MapNetworkDrive "z:", "\\olysbs\Users\"  & objNetwork.UserName

' SETTING THE PRINTERS, APPARANTLY FOR EVERYONE THE SAME !
Set net = CreateObject("WScript.Network")
net.AddWindowsPrinterConnection "\\olysbs\chris", "Chris's Printer"
net.AddWindowsPrinterConnection "\\olysbs\frank", "Frank's Printer"
net.AddWindowsPrinterConnection "\\olysbs\shop", "Shop Printer"
net.AddWindowsPrinterConnection "\\olysbs\11x17", "11x17 Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice1", "Main Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\invoice2", "BU Invoice Printer"
net.AddWindowsPrinterConnection "\\olysbs\office", "Main Office Printer"
net.AddWindowsPrinterConnection "\\server\design east", "Design East"
net.AddWindowsPrinterConnection "\\server\design east", "Design West"
net.AddWindowsPrinterConnection "\\server\lee", "Lee's Printer"

' EXTRA DRIVES FOR SPECIFIC GROUP

if InStr(strGroup, Admin_Group) or instr(strGrooup, Managars_Group) or instr(strGrooup, Estimate_Group) then
   objNetwork.MapNetworkDrive "m:", "\\olysbs\slg shared "
   objNetwork.MapNetworkDrive "o:", "\\olysbs\job costing"
end if

if InStr(strGroup, Admin_Group) or instr(strGrooup, Managars_Group) then
   objNetwork.MapNetworkDrive "v:", "\\olysbs\manager"
end if

if instr(strGroup, Managars_Group) or instr(strGroup, Design_East_Group) or  =instr(strGroup,Design_West_Group) then
   objNetwork.MapNetworkDrive "x:", "\\server\sprink slick"
end if

if instr(strGrooup, Managars_Group)
  objNetwork.MapNetworkDrive "n:", "\\server\drawings"
end if

if InStr(strGroup, Admin_Group) then
 objNetwork.MapNetworkDrive "p:", "\\olysbs\slg"
 objNetwork.MapNetworkDrive "s:", "\\server\slic"
 objNetwork.MapNetworkDrive "u:", "\\olysbs\hr"
 objNetwork.MapNetworkDrive "w:", "\\olysbs\accounting"
end if
0
 

Author Comment

by:tm9
Comment Utility
Please close this question.
Points have been awarded in the VBS section
0
 

Accepted Solution

by:
modulo earned 0 total points
Comment Utility
PAQed, with points refunded (500)

modulo
Community Support Moderator
0

Featured Post

Get up to 2TB FREE CLOUD per backup license!

An exclusive Black Friday offer just for Expert Exchange audience! Buy any of our top-rated backup solutions & get up to 2TB free cloud per system! Perform local & cloud backup in the same step, and restore instantly—anytime, anywhere. Grab this deal now before it disappears!

Join & Write a Comment

This may not be a text book method to resolve VSS backup issues but it seemed to have worked on few of the Windows 2003 servers we had issues while performing a Volume Shadow Copy backup. If you have issues while performing a shadow copy backup usin…
On July 14th 2015, Windows Server 2003 will become End of Support, leaving hundreds of thousands of servers around the world that still run this 12 year old operating system vulnerable and potentially out of compliance in many organisations around t…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now