Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.04 KB | None | 0 0
  1. '##########################
  2. '### HSC Login Script ###
  3. '##########################
  4.  
  5. Option Explicit
  6.  
  7. Dim strUserDN, objUser, strUserName
  8. Dim objNetwork, objFSO, objADSysinfo, objGroups, objShell
  9. Dim objGroupFolder, objUserFolder
  10. Dim objRootDSE, strDC, strSiteName
  11. Dim groupFolderContents, userFolderContents, strBaseName, objFileName, strTextFile
  12. Dim strTextFileLines, strLine, arrRow
  13. Dim strDriveLetter, strUNCPath, strNewName, strPrinterPath
  14. Dim i
  15.  
  16. Set objFSO = CreateObject("Scripting.FileSystemObject")
  17. Set objADSysInfo = CreateObject("ADSystemInfo") 'Object that contains DN of user
  18. Set objGroups = CreateObject("Scripting.Dictionary") 'Dictionary Object that contains group Names
  19. Set objShell = CreateObject("Shell.Application")
  20. Set objNetwork = CreateObject("Wscript.Network")
  21.  
  22. '############################
  23. '### AD Group Discovery ###
  24. '############################
  25.  
  26. ' Assign Username to strUserName
  27. strUserName = objNetwork.UserName
  28.  
  29. ' Assign Distinguished Name to strUserDN
  30. strUserDN = objADSysInfo.userName
  31. strUserDN = Replace(strUserDN, "/", "\/")
  32.  
  33. ' Create user LDAP Object.
  34. Set objUser = GetObject("LDAP://" & strUserDN)
  35.  
  36. ' Enumerate group memberships.
  37. Call EnumGroups(objUser, "")
  38.  
  39. ' Find Domain Controller and Site, Add Site to Group list
  40. Set objRootDSE = GetObject("LDAP://rootDSE")
  41. strDC = objRootDSE.Get("dnsHostName")
  42. strSiteName = objADSysInfo.SiteName
  43. objGroups.Add "Site." & strSiteName, True
  44.  
  45. ' Remove unnecessary groups / Increase security
  46. If objGroups.Exists("Domain Users") Then objGroups.Remove("Domain Users")
  47. If objGroups.Exists("OITAdmins") Then objGroups.Remove("OITAdmins")
  48. If objGroups.Exists("Domain Admins") Then objGroups.Remove("Domain Admins")
  49. If objGroups.Exists("PrintServerAdmins") Then objGroups.Remove("PrintServerAdmins")
  50. If objGroups.Exists("TLRC-PrintQuotaManagers") Then objGroups.Remove("TLRC-PrintQuotaManagers")
  51. If objGroups.Exists("vCenterAdmins") Then objGroups.Remove("vCenterAdmins")
  52. If objGroups.Exists("ViewAdmins") Then objGroups.Remove("ViewAdmins")
  53. If objGroups.Exists("OITSQLAdmins") Then objGroups.Remove("OITSQLAdmins")
  54. If objGroups.Exists("OITHelpDesk") Then objGroups.Remove("OITHelpDesk")
  55. If objGroups.Exists("Admin-Personnel") Then objGroups.Remove("Admin-Personnel")
  56. If objGroups.Exists("AperioAdmins") Then objGroups.Remove("AperioAdmins")
  57. If objGroups.Exists("EMDSAdmins") Then objGroups.Remove("EMDSAdmins")
  58. If objGroups.Exists("Enterprise Admins") Then objGroups.Remove("Enterprise Admins")
  59. If objGroups.Exists("RCHIAdmins") Then objGroups.Remove("RCHIAdmins")
  60. If objGroups.Exists("ReportingGroup {79dccbca-b9eb-44c8-8625-bfe2d2adaa45}") Then objGroups.Remove("ReportingGroup {79dccbca-b9eb-44c8-8625-bfe2d2adaa45}")
  61. If objGroups.Exists("UserGroup {79dccbca-b9eb-44c8-8625-bfe2d2adaa45}") Then objGroups.Remove("UserGroup {79dccbca-b9eb-44c8-8625-bfe2d2adaa45}")
  62. If objGroups.Exists("StorageAdmins") Then objGroups.Remove("StorageAdmins")
  63. If objGroups.Exists("RaisersEdgeUsers") Then objGroups.Remove("RaisersEdgeUsers")
  64. If objGroups.Exists("AccellionUsers") Then objGroups.Remove("AccellionUsers")
  65. If objGroups.Exists("OIT-LMS") Then objGroups.Remove("OIT-LMS")
  66. If objGroups.Exists("AxiumAdmins") Then objGroups.Remove("AxiumAdmins")
  67. If objGroups.Exists("BCD-Axium Studnt Comps") Then objGroups.Remove("BCD-Axium Studnt Comps")
  68. If objGroups.Exists("AxiumAdmin") Then objGroups.Remove("AxiumAdmin")
  69. If objGroups.Exists("SysEng") Then objGroups.Remove("SysEng")
  70. If objGroups.Exists("BCD-Dolphin Users") Then objGroups.Remove("BCD-Dolphin Users")
  71. If objGroups.Exists("BlackBoardAdmins") Then objGroups.Remove("BlackBoardAdmins")
  72. If objGroups.Exists("SQLServer2005MSSQLUser$BCDAD1$SQLEXPRESS") Then objGroups.Remove("SQLServer2005MSSQLUser$BCDAD1$SQLEXPRESS")
  73. If objGroups.Exists("SQLServer2005ReportServerUser$BCDAD1$SQLEXPRESS") Then objGroups.Remove("SQLServer2005ReportServerUser$BCDAD1$SQLEXPRESS")
  74. If objGroups.Exists("SQLServer2005SQLBrowserUser$BCDAD1") Then objGroups.Remove("SQLServer2005SQLBrowserUser$BCDAD1")
  75. If objGroups.Exists("BCD-Queue") Then objGroups.Remove("BCD-Queue")
  76. If objGroups.Exists("BCD-Staff") Then objGroups.Remove("BCD-Staff")
  77. If objGroups.Exists("BCD-DolphinUsers") Then objGroups.Remove("BCD-DolphinUsers")
  78. If objGroups.Exists("BCD-REWIN Users") Then objGroups.Remove("BCD-REWIN Users")
  79. If objGroups.Exists("Organization Management") Then objGroups.Remove("Organization Management")
  80. If objGroups.Exists("Offer Remote Assistance Helpers") Then objGroups.Remove("Offer Remote Assistance Helpers")
  81. If objGroups.Exists("$Duplicate-6a1f") Then objGroups.Remove("$Duplicate-6a1f")
  82. If objGroups.Exists("WSUS Administrators") Then objGroups.Remove("WSUS Administrators")
  83. If objGroups.Exists("DnsAdmins") Then objGroups.Remove("DnsAdmins")
  84. If objGroups.Exists("Server Operators") Then objGroups.Remove("Server Operators")
  85. If objGroups.Exists("Remote Desktop Users") Then objGroups.Remove("Remote Desktop Users")
  86. If objGroups.Exists("Backup Operators") Then objGroups.Remove("Backup Operators")
  87. If objGroups.Exists("Administrators") Then objGroups.Remove("Administrators")
  88. If objGroups.Exists("Users") Then objGroups.Remove("Users")
  89. If objGroups.Exists("Power Users") Then objGroups.Remove("Power Users")
  90. If objGroups.Exists("Print Operators") Then objGroups.Remove("Print Operators")
  91. If objGroups.Exists("BCD-REWIN Users") Then objGroups.Remove("BCD-REWIN Users")
  92.  
  93. '#############################
  94. '### Printers and Shares ###
  95. '#############################
  96.  
  97. '#######################
  98. '### Group Scripts ###
  99. '#######################
  100.  
  101. ' Compare Groups to GroupScripts\group.txt files and parse matching files
  102. Set objGroupFolder = objFSO.GetFolder("\\ad.tamhsc.edu\NETLOGON\GroupScripts")
  103. Set groupFolderContents = objGroupFolder.Files
  104.  
  105. 'Test
  106. 'objGroups.Add "testa", True
  107.  
  108. For each i in objGroups
  109. For each objFileName in groupFolderContents
  110. strBaseName = objFSO.GetBaseName(objFileName)
  111. If UCase(i) = UCase(strBaseName) AND objFileName.size > 0 Then
  112. ' Test
  113. 'wscript.echo "Group to File Match " & i
  114. strTextFile = objFSO.OpenTextFile(objFileName, 1).ReadAll
  115. strTextFileLines = Split(strTextFile,vbCrLf)
  116. For Each strLine in strTextFileLines
  117. If Left(strLine,1) <> "'" Then
  118. arrRow = Split(strLine,",")
  119. If UBound(arrRow) > 0 Then
  120. arrRow(0) = Trim(arrRow(0))
  121. Select Case arrRow(0)
  122. Case "MapShare"
  123. If UBound(arrRow) > 2 Then
  124. ' Test
  125. 'wscript.echo "MapDriveLetter " & arrRow(1) & " " & arrRow(2) & " " & arrRow(3)
  126. Call MapDriveLetter(Trim(arrRow(1)), Trim(arrRow(2)), Trim(arrRow(3)))
  127. End If
  128. Case "MapPrinter"
  129. ' Test
  130. 'wscript.echo "MapPrinter " & arrRow(1)
  131. Call MapPrinter(Trim(arrRow(1)))
  132. Case "UnMapPrinter"
  133. ' Test
  134. 'wscript.echo "UnMapPrinter " & arrRow(1)
  135. Call UnMapPrinter(Trim(arrRow(1)))
  136. End Select
  137. End If
  138. End If
  139. Next
  140. End If
  141. Next
  142. Next
  143.  
  144. '######################
  145. '### User Scripts ###
  146. '######################
  147.  
  148. ' Compare UserName to UserScripts\user.txt files and parse matching files
  149. Set objUserFolder = objFSO.GetFolder("\\ad.tamhsc.edu\NETLOGON\UserScripts")
  150. Set userFolderContents = objUserFolder.Files
  151.  
  152. For each objFileName in userFolderContents
  153. strBaseName = objFSO.GetBaseName(objFileName)
  154. If UCase(strUserName) = UCase(strBaseName) AND objFileName.size > 0 Then
  155. ' Test
  156. 'wscript.echo "User to File Match " & i
  157. strTextFile = objFSO.OpenTextFile(objFileName, 1).ReadAll
  158. strTextFileLines = Split(strTextFile,vbCrLf)
  159. For Each strLine in strTextFileLines
  160. If Left(strLine,1) <> "'" Then
  161. arrRow = Split(strLine,",")
  162. If UBound(arrRow) > 0 Then
  163. arrRow(0) = Trim(arrRow(0))
  164. Select Case arrRow(0)
  165. Case "MapShare"
  166. If UBound(arrRow) > 2 Then
  167. ' Test
  168. 'wscript.echo "MapDriveLetter " & arrRow(1) & " " & arrRow(2) & " " & arrRow(3)
  169. Call MapDriveLetter(Trim(arrRow(1)), Trim(arrRow(2)), Trim(arrRow(3)))
  170. End If
  171. Case "MapPrinter"
  172. ' Test
  173. 'wscript.echo "MapPrinter " & arrRow(1)
  174. Call MapPrinter(Trim(arrRow(1)))
  175. Case "UnMapPrinter"
  176. ' Test
  177. 'wscript.echo "UnMapPrinter " & arrRow(1)
  178. Call UnMapPrinter(Trim(arrRow(1)))
  179. End Select
  180. End If
  181. End If
  182. Next
  183. End If
  184. Next
  185.  
  186. '##############
  187. '### Subs ###
  188. '##############
  189.  
  190. Sub MapDriveLetter(strDriveLetter, strUNCPath, strNewName)
  191. On Error Resume Next
  192. If objFSO.DriveExists(strDriveLetter) = True Then
  193. objNetwork.RemoveNetworkDrive strDriveLetter
  194. End If
  195. objNetwork.MapNetworkDrive strDriveLetter, strUNCPath
  196. objShell.NameSpace(strDriveLetter).Self.Name = strNewName
  197. On Error Goto 0
  198. End Sub
  199.  
  200. Sub MapPrinter(strPrinterPath)
  201. On Error Resume Next
  202. objNetwork.AddWindowsPrinterConnection strPrinterPath
  203. On Error Goto 0
  204. End Sub
  205.  
  206. Sub UnMapPrinter(strPrinterPath)
  207. On Error Resume Next
  208. objNetwork.RemovePrinterConnection strPrinterPath
  209. On Error Goto 0
  210. End Sub
  211.  
  212. Sub EnumGroups(ByVal objADObject, ByVal strOffset)
  213. ' Taken from http://www.rlmueller.net/List%20User%20Groups.htm
  214. ' Recursive subroutine to enumerate user group memberships.
  215. ' Includes nested group memberships.
  216. Dim colstrGroups, objGroup, j
  217. objGroups.CompareMode = vbTextCompare
  218. colstrGroups = objADObject.memberOf
  219. If (IsEmpty(colstrGroups) = True) Then
  220. Exit Sub
  221. End If
  222. If (TypeName(colstrGroups) = "String") Then
  223. colstrGroups = Replace(colstrGroups, "/", "\/")
  224. Set objGroup = GetObject("LDAP://" & colstrGroups)
  225. If (objGroups.Exists(objGroup.sAMAccountName) = False) Then
  226. objGroups.Add objGroup.sAMAccountName, True
  227. Call EnumGroups(objGroup, strOffset & "--")
  228. End If
  229. Exit Sub
  230. End If
  231. For j = 0 To UBound(colstrGroups)
  232. colstrGroups(j) = Replace(colstrGroups(j), "/", "\/")
  233. Set objGroup = GetObject("LDAP://" & colstrGroups(j))
  234. If (objGroups.Exists(objGroup.sAMAccountName) = False) Then
  235. objGroups.Add objGroup.sAMAccountName, True
  236. Call EnumGroups(objGroup, strOffset & "--")
  237. End If
  238. Next
  239. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement