Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '##########################
- '### HSC Login Script ###
- '##########################
- Option Explicit
- Dim strUserDN, objUser, strUserName
- Dim objNetwork, objFSO, objADSysinfo, objGroups, objShell
- Dim objGroupFolder, objUserFolder
- Dim objRootDSE, strDC, strSiteName
- Dim groupFolderContents, userFolderContents, strBaseName, objFileName, strTextFile
- Dim strTextFileLines, strLine, arrRow
- Dim strDriveLetter, strUNCPath, strNewName, strPrinterPath
- Dim i
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- Set objADSysInfo = CreateObject("ADSystemInfo") 'Object that contains DN of user
- Set objGroups = CreateObject("Scripting.Dictionary") 'Dictionary Object that contains group Names
- Set objShell = CreateObject("Shell.Application")
- Set objNetwork = CreateObject("Wscript.Network")
- '############################
- '### AD Group Discovery ###
- '############################
- ' Assign Username to strUserName
- strUserName = objNetwork.UserName
- ' Assign Distinguished Name to strUserDN
- strUserDN = objADSysInfo.userName
- strUserDN = Replace(strUserDN, "/", "\/")
- ' Create user LDAP Object.
- Set objUser = GetObject("LDAP://" & strUserDN)
- ' Enumerate group memberships.
- Call EnumGroups(objUser, "")
- ' Find Domain Controller and Site, Add Site to Group list
- Set objRootDSE = GetObject("LDAP://rootDSE")
- strDC = objRootDSE.Get("dnsHostName")
- strSiteName = objADSysInfo.SiteName
- objGroups.Add "Site." & strSiteName, True
- ' Remove unnecessary groups / Increase security
- If objGroups.Exists("Domain Users") Then objGroups.Remove("Domain Users")
- If objGroups.Exists("OITAdmins") Then objGroups.Remove("OITAdmins")
- If objGroups.Exists("Domain Admins") Then objGroups.Remove("Domain Admins")
- If objGroups.Exists("PrintServerAdmins") Then objGroups.Remove("PrintServerAdmins")
- If objGroups.Exists("TLRC-PrintQuotaManagers") Then objGroups.Remove("TLRC-PrintQuotaManagers")
- If objGroups.Exists("vCenterAdmins") Then objGroups.Remove("vCenterAdmins")
- If objGroups.Exists("ViewAdmins") Then objGroups.Remove("ViewAdmins")
- If objGroups.Exists("OITSQLAdmins") Then objGroups.Remove("OITSQLAdmins")
- If objGroups.Exists("OITHelpDesk") Then objGroups.Remove("OITHelpDesk")
- If objGroups.Exists("Admin-Personnel") Then objGroups.Remove("Admin-Personnel")
- If objGroups.Exists("AperioAdmins") Then objGroups.Remove("AperioAdmins")
- If objGroups.Exists("EMDSAdmins") Then objGroups.Remove("EMDSAdmins")
- If objGroups.Exists("Enterprise Admins") Then objGroups.Remove("Enterprise Admins")
- If objGroups.Exists("RCHIAdmins") Then objGroups.Remove("RCHIAdmins")
- If objGroups.Exists("ReportingGroup {79dccbca-b9eb-44c8-8625-bfe2d2adaa45}") Then objGroups.Remove("ReportingGroup {79dccbca-b9eb-44c8-8625-bfe2d2adaa45}")
- If objGroups.Exists("UserGroup {79dccbca-b9eb-44c8-8625-bfe2d2adaa45}") Then objGroups.Remove("UserGroup {79dccbca-b9eb-44c8-8625-bfe2d2adaa45}")
- If objGroups.Exists("StorageAdmins") Then objGroups.Remove("StorageAdmins")
- If objGroups.Exists("RaisersEdgeUsers") Then objGroups.Remove("RaisersEdgeUsers")
- If objGroups.Exists("AccellionUsers") Then objGroups.Remove("AccellionUsers")
- If objGroups.Exists("OIT-LMS") Then objGroups.Remove("OIT-LMS")
- If objGroups.Exists("AxiumAdmins") Then objGroups.Remove("AxiumAdmins")
- If objGroups.Exists("BCD-Axium Studnt Comps") Then objGroups.Remove("BCD-Axium Studnt Comps")
- If objGroups.Exists("AxiumAdmin") Then objGroups.Remove("AxiumAdmin")
- If objGroups.Exists("SysEng") Then objGroups.Remove("SysEng")
- If objGroups.Exists("BCD-Dolphin Users") Then objGroups.Remove("BCD-Dolphin Users")
- If objGroups.Exists("BlackBoardAdmins") Then objGroups.Remove("BlackBoardAdmins")
- If objGroups.Exists("SQLServer2005MSSQLUser$BCDAD1$SQLEXPRESS") Then objGroups.Remove("SQLServer2005MSSQLUser$BCDAD1$SQLEXPRESS")
- If objGroups.Exists("SQLServer2005ReportServerUser$BCDAD1$SQLEXPRESS") Then objGroups.Remove("SQLServer2005ReportServerUser$BCDAD1$SQLEXPRESS")
- If objGroups.Exists("SQLServer2005SQLBrowserUser$BCDAD1") Then objGroups.Remove("SQLServer2005SQLBrowserUser$BCDAD1")
- If objGroups.Exists("BCD-Queue") Then objGroups.Remove("BCD-Queue")
- If objGroups.Exists("BCD-Staff") Then objGroups.Remove("BCD-Staff")
- If objGroups.Exists("BCD-DolphinUsers") Then objGroups.Remove("BCD-DolphinUsers")
- If objGroups.Exists("BCD-REWIN Users") Then objGroups.Remove("BCD-REWIN Users")
- If objGroups.Exists("Organization Management") Then objGroups.Remove("Organization Management")
- If objGroups.Exists("Offer Remote Assistance Helpers") Then objGroups.Remove("Offer Remote Assistance Helpers")
- If objGroups.Exists("$Duplicate-6a1f") Then objGroups.Remove("$Duplicate-6a1f")
- If objGroups.Exists("WSUS Administrators") Then objGroups.Remove("WSUS Administrators")
- If objGroups.Exists("DnsAdmins") Then objGroups.Remove("DnsAdmins")
- If objGroups.Exists("Server Operators") Then objGroups.Remove("Server Operators")
- If objGroups.Exists("Remote Desktop Users") Then objGroups.Remove("Remote Desktop Users")
- If objGroups.Exists("Backup Operators") Then objGroups.Remove("Backup Operators")
- If objGroups.Exists("Administrators") Then objGroups.Remove("Administrators")
- If objGroups.Exists("Users") Then objGroups.Remove("Users")
- If objGroups.Exists("Power Users") Then objGroups.Remove("Power Users")
- If objGroups.Exists("Print Operators") Then objGroups.Remove("Print Operators")
- If objGroups.Exists("BCD-REWIN Users") Then objGroups.Remove("BCD-REWIN Users")
- '#############################
- '### Printers and Shares ###
- '#############################
- '#######################
- '### Group Scripts ###
- '#######################
- ' Compare Groups to GroupScripts\group.txt files and parse matching files
- Set objGroupFolder = objFSO.GetFolder("\\ad.tamhsc.edu\NETLOGON\GroupScripts")
- Set groupFolderContents = objGroupFolder.Files
- 'Test
- 'objGroups.Add "testa", True
- For each i in objGroups
- For each objFileName in groupFolderContents
- strBaseName = objFSO.GetBaseName(objFileName)
- If UCase(i) = UCase(strBaseName) AND objFileName.size > 0 Then
- ' Test
- 'wscript.echo "Group to File Match " & i
- strTextFile = objFSO.OpenTextFile(objFileName, 1).ReadAll
- strTextFileLines = Split(strTextFile,vbCrLf)
- For Each strLine in strTextFileLines
- If Left(strLine,1) <> "'" Then
- arrRow = Split(strLine,",")
- If UBound(arrRow) > 0 Then
- arrRow(0) = Trim(arrRow(0))
- Select Case arrRow(0)
- Case "MapShare"
- If UBound(arrRow) > 2 Then
- ' Test
- 'wscript.echo "MapDriveLetter " & arrRow(1) & " " & arrRow(2) & " " & arrRow(3)
- Call MapDriveLetter(Trim(arrRow(1)), Trim(arrRow(2)), Trim(arrRow(3)))
- End If
- Case "MapPrinter"
- ' Test
- 'wscript.echo "MapPrinter " & arrRow(1)
- Call MapPrinter(Trim(arrRow(1)))
- Case "UnMapPrinter"
- ' Test
- 'wscript.echo "UnMapPrinter " & arrRow(1)
- Call UnMapPrinter(Trim(arrRow(1)))
- End Select
- End If
- End If
- Next
- End If
- Next
- Next
- '######################
- '### User Scripts ###
- '######################
- ' Compare UserName to UserScripts\user.txt files and parse matching files
- Set objUserFolder = objFSO.GetFolder("\\ad.tamhsc.edu\NETLOGON\UserScripts")
- Set userFolderContents = objUserFolder.Files
- For each objFileName in userFolderContents
- strBaseName = objFSO.GetBaseName(objFileName)
- If UCase(strUserName) = UCase(strBaseName) AND objFileName.size > 0 Then
- ' Test
- 'wscript.echo "User to File Match " & i
- strTextFile = objFSO.OpenTextFile(objFileName, 1).ReadAll
- strTextFileLines = Split(strTextFile,vbCrLf)
- For Each strLine in strTextFileLines
- If Left(strLine,1) <> "'" Then
- arrRow = Split(strLine,",")
- If UBound(arrRow) > 0 Then
- arrRow(0) = Trim(arrRow(0))
- Select Case arrRow(0)
- Case "MapShare"
- If UBound(arrRow) > 2 Then
- ' Test
- 'wscript.echo "MapDriveLetter " & arrRow(1) & " " & arrRow(2) & " " & arrRow(3)
- Call MapDriveLetter(Trim(arrRow(1)), Trim(arrRow(2)), Trim(arrRow(3)))
- End If
- Case "MapPrinter"
- ' Test
- 'wscript.echo "MapPrinter " & arrRow(1)
- Call MapPrinter(Trim(arrRow(1)))
- Case "UnMapPrinter"
- ' Test
- 'wscript.echo "UnMapPrinter " & arrRow(1)
- Call UnMapPrinter(Trim(arrRow(1)))
- End Select
- End If
- End If
- Next
- End If
- Next
- '##############
- '### Subs ###
- '##############
- Sub MapDriveLetter(strDriveLetter, strUNCPath, strNewName)
- On Error Resume Next
- If objFSO.DriveExists(strDriveLetter) = True Then
- objNetwork.RemoveNetworkDrive strDriveLetter
- End If
- objNetwork.MapNetworkDrive strDriveLetter, strUNCPath
- objShell.NameSpace(strDriveLetter).Self.Name = strNewName
- On Error Goto 0
- End Sub
- Sub MapPrinter(strPrinterPath)
- On Error Resume Next
- objNetwork.AddWindowsPrinterConnection strPrinterPath
- On Error Goto 0
- End Sub
- Sub UnMapPrinter(strPrinterPath)
- On Error Resume Next
- objNetwork.RemovePrinterConnection strPrinterPath
- On Error Goto 0
- End Sub
- Sub EnumGroups(ByVal objADObject, ByVal strOffset)
- ' Taken from http://www.rlmueller.net/List%20User%20Groups.htm
- ' Recursive subroutine to enumerate user group memberships.
- ' Includes nested group memberships.
- Dim colstrGroups, objGroup, j
- objGroups.CompareMode = vbTextCompare
- colstrGroups = objADObject.memberOf
- If (IsEmpty(colstrGroups) = True) Then
- Exit Sub
- End If
- If (TypeName(colstrGroups) = "String") Then
- colstrGroups = Replace(colstrGroups, "/", "\/")
- Set objGroup = GetObject("LDAP://" & colstrGroups)
- If (objGroups.Exists(objGroup.sAMAccountName) = False) Then
- objGroups.Add objGroup.sAMAccountName, True
- Call EnumGroups(objGroup, strOffset & "--")
- End If
- Exit Sub
- End If
- For j = 0 To UBound(colstrGroups)
- colstrGroups(j) = Replace(colstrGroups(j), "/", "\/")
- Set objGroup = GetObject("LDAP://" & colstrGroups(j))
- If (objGroups.Exists(objGroup.sAMAccountName) = False) Then
- objGroups.Add objGroup.sAMAccountName, True
- Call EnumGroups(objGroup, strOffset & "--")
- End If
- Next
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement