Solved

Logon Script help --Small Business Server 2003

Posted on 2009-07-06
5
231 Views
Last Modified: 2013-11-29

I have successfully created 3 VBS logon scripts utilizing GP based on all of the questions and answers I found in the knowledgebase on Experts-Exchange.

I having trouble with one more I need (yes I have reviewed the articles already posted, but to no avail).

Here is I ehat I need specifically:  I created a group called "CSRs" in Active directory.

If you are a member of "CSRs"
then
Map the following drive \\10.24.80.10\shared
Otherwise do nothing

Could somebody please provide me with the VBS code to perfrom the above?

Thank you,

John


0
Comment
Question by:CILLC
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 96

Expert Comment

by:Lee W, MVP
ID: 24785655
Why must it be a VBS script?  I use batch scripts for most things - they are simpler.

for you, you would get the IFMEMBER utility from the resource kit, put it on a network share or push it out to the clients and use that.

http://www.microsoft.com/downloads/details.aspx?FamilyID=07C2F6D7-815E-4FA0-9043-4E4635CCD417&displaylang=en
if not exist "%windir%\system32\ifmember.exe" copy "\\server\share\path\to\ifmember.exe" "%windir%\system32"
 
ifmember CSRs
if not errorlevel 1 goto CSRsDone
net use z: \\servername-fs03\data
:CSRsDone

Open in new window

0
 
LVL 6

Expert Comment

by:ou_dober
ID: 24785780
Here is what we use in our shop - of course modified.  Great script though.

Here is the link to the author's site.

http://www.rlmueller.net/LogonScriptFAQ.htm

Hope this helps.
' Logon3.vbs
' VBScript logon script program.
'
' ----------------------------------------------------------------------
' Copyright (c) 2002 Richard L. Mueller
' Hilltop Lab web site - http://www.rlmueller.net
' Version 1.0 - November 22, 2002
' Version 1.1 - February 19, 2003 - Standardize Hungarian notation.
' Version 1.2 - January 25, 2004 - Modify error trapping.
' Version 1.3 - July 31, 2007 - Escape any "/" characters in DN's.
'
' You have a royalty-free right to use, modify, reproduce, and
' distribute this script file in any way you find useful, provided that
' you agree that the copyright owner above has no warranty, obligations,
' or liability for such use.
 
Option Explicit
 
Dim objNetwork, objSysInfo, strUserDN
Dim objGroupList, objUser, objFSO
Dim strComputerDN, objComputer
 
Set objNetwork = CreateObject("Wscript.Network")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSysInfo = CreateObject("ADSystemInfo")
strUserDN = objSysInfo.userName
strComputerDN = objSysInfo.computerName
 
' Escape any forward slash characters, "/", with the backslash
' escape character. All other characters that should be escaped are.
strUserDN = Replace(strUserDN, "/", "\/")
strComputerDN = Replace(strComputerDN, "/", "\/")
 
' Bind to the user and computer objects with the LDAP provider.
Set objUser = GetObject("LDAP://" & strUserDN)
Set objComputer = GetObject("LDAP://" & strComputerDN)
 
' Map a network drive if the user is a member of the group.
' Alert the user if the drive cannot be mapped.
If (IsMember(objUser, "Engineering") = True) Then
    If (MapDrive("M:", "\\FileServer\EngrShare") = False) Then
        MsgBox "Unable to Map M: to AdminShare"
    End If
End If
 
' Add a network printer if the computer is a member of the group.
' Make this printer the default.
If (IsMember(objComputer, "Front Office") = True) Then
    objNetwork.AddWindowsPrinterConnection "\\PrintServer\HPLaser2"
    objNetwork.SetDefaultPrinter "\\PrintServer\HPLaser2"
End If
 
' Clean up.
Set objNetwork = Nothing
Set objFSO = Nothing
Set objSysInfo = Nothing
Set objGroupList = Nothing
Set objUser = Nothing
Set objComputer = Nothing
 
Function IsMember(ByVal objADObject, ByVal strGroup)
    ' Function to test for group membership.
    ' objGroupList is a dictionary object with global scope.
 
    If (IsEmpty(objGroupList) = True) Then
        Set objGroupList = CreateObject("Scripting.Dictionary")
    End If
    If (objGroupList.Exists(objADObject.sAMAccountName & "\") = False) Then
        Call LoadGroups(objADObject, objADObject)
        objGroupList.Add objADObject.sAMAccountName & "\", True
    End If
    IsMember = objGroupList.Exists(objADObject.sAMAccountName & "\" _
        & strGroup)
End Function
 
Sub LoadGroups(ByVal objPriObject, ByVal objADSubObject)
    ' Recursive subroutine to populate dictionary object objGroupList.
 
    Dim colstrGroups, objGroup, j
 
    objGroupList.CompareMode = vbTextCompare
    colstrGroups = objADSubObject.memberOf
    If (IsEmpty(colstrGroups) = True) Then
        Exit Sub
    End If
    If (TypeName(colstrGroups) = "String") Then
        ' Escape any forward slash characters, "/", with the backslash
        ' escape character. All other characters that should be escaped are.
        colstrGroups = Replace(colstrGroups, "/", "\/")
        Set objGroup = GetObject("LDAP://" & colstrGroups)
        If (objGroupList.Exists(objPriObject.sAMAccountName & "\" _
                & objGroup.sAMAccountName) = False) Then
            objGroupList.Add objPriObject.sAMAccountName & "\" _
                & objGroup.sAMAccountName, True
            Call LoadGroups(objPriObject, objGroup)
        End If
        Set objGroup = Nothing
        Exit Sub
    End If
    For j = 0 To UBound(colstrGroups)
        ' Escape any forward slash characters, "/", with the backslash
        ' escape character. All other characters that should be escaped are.
        colstrGroups(j) = Replace(colstrGroups(j), "/", "\/")
        Set objGroup = GetObject("LDAP://" & colstrGroups(j))
        If (objGroupList.Exists(objPriObject.sAMAccountName & "\" _
                & objGroup.sAMAccountName) = False) Then
            objGroupList.Add objPriObject.sAMAccountName & "\" _
                & objGroup.sAMAccountName, True
            Call LoadGroups(objPriObject, objGroup)
        End If
    Next
    Set objGroup = Nothing
End Sub
 
Function MapDrive(ByVal strDrive, ByVal strShare)
    ' Function to map network share to a drive letter.
    ' If the drive letter specified is already in use, the function
    ' attempts to remove the network connection.
    ' objFSO is the File System Object, with global scope.
    ' objNetwork is the Network object, with global scope.
    ' Returns True if drive mapped, False otherwise.
 
    Dim objDrive
 
    On Error Resume Next
    If (objFSO.DriveExists(strDrive) = True) Then
        Set objDrive = objFSO.GetDrive(strDrive)
        If (Err.Number <> 0) Then
            On Error GoTo 0
            MapDrive = False
            Exit Function
        End If
        If (objDrive.DriveType = 3) Then
            objNetwork.RemoveNetworkDrive strDrive, True, True
        Else
            MapDrive = False
            Exit Function
        End If
        Set objDrive = Nothing
    End If
    objNetwork.MapNetworkDrive strDrive, strShare
    If (Err.Number = 0) Then
        MapDrive = True
    Else
        Err.Clear
        MapDrive = False
    End If
    On Error GoTo 0
End Function

Open in new window

0
 
LVL 2

Accepted Solution

by:
Archonaus earned 500 total points
ID: 24785863
VBS offers so much more flexibility for scripting than batch files, though they do have their occasional uses...

Anyway, here is the same function in VBscript.  It checks if the drive is already there and maps accordingly.  You can change the variables at the top to change drive letter, path and the group you want to lookup.

If you want to disable the popup messages (good for testing but annoying otherwise) just comment out the 3 lines that have Msgbox at the start by putting a ' at the beginning.

Hope you like it!

P.s.  I wrote it as a Subroutine - Drivemapper, so the core functionality can easily be inserted and used in other scripts.
Option Explicit
 
Dim strGroup, strDrive, strPath
Dim objNetwork, objDrives, ADSysInfo, objUser, colGroups, objGroup, groupMember
 
strGroup = "CSRs"
strDrive = "V:"
strPath = "\\10.24.80.10\shared"
 
Set objNetwork = WScript.CreateObject("WScript.Network")
Set objDrives = objNetwork.EnumNetworkDrives
 
Set ADSysInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & ADSysInfo.UserName)
Set colGroups = objUser.Groups
 
For Each objGroup in colGroups
    
    	groupMember = objGroup.CN
	
	If InStr(groupMember, strGroup) Then
 
	DriveMapper strDrive, strPath
	
	End If
 
Next
 
Sub DriveMapper(sDrive, sShare)
    Dim i
    For i = 0 to objDrives.Count -1 Step 2
    if LCase(sDrive) = LCase(objDrives.Item(i)) then
        if not LCase(sShare) = LCase(objDrives.Item(i+1)) then
            objNetwork.RemoveNetworkDrive sDrive, true, true
        Else
            Msgbox (Now() & ": Success: Connect """ & sDrive & """ to share """ & sShare & """ (previously connected)")
            Exit Sub
        End if
    End if
    Next
    on error resume next
    objNetwork.MapNetworkDrive sDrive, sShare
    If Err.Number = 0 Then
        Msgbox (Now() & ": Success: Connect """ & sDrive & """ to share """ & sShare & """")
    else
        Msgbox (Now() & ": Failed: Connect """ & sDrive & """ to share """ & sShare & """")
    end if
    on error goto 0
End Sub

Open in new window

0
 
LVL 96

Expert Comment

by:Lee W, MVP
ID: 24786001
VBS scripts have their use, but batch files are simpler, in MOST cases shorter, and easier for most people to understand.  
0
 

Author Closing Comment

by:CILLC
ID: 31600183
Worked Perfectly.

Thank you,

John
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Some time ago I faced the need to use a uniform folder structure that spanned across numerous sites of an enterprise to be used as a common repository for the Software packages of the Configuration Manager 2007 infrastructure. Because the procedu…
Know what services you can and cannot, should and should not combine on your server.
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…

707 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