LordOfTheApes

[VBS] Scan AD OU and Report Information

Jun 3rd, 2014
1,448
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'MODIEIFED on 06.02.2014 by ANON
  2. 'CREATE A Reports Sub Folder since the script doesn't do it for you.
  3. On Error Resume Next
  4.  
  5. Const ADS_SCOPE_SUBTREE = 2
  6. Const ForAppending = 8
  7. Const TriStateFalse = 0
  8.  
  9. TIME_DATE_FORMAT = "." & Year(Now()) & Month(Now()) & Day(Now()) & "." & Hour(Now()) & Minute(Now()) & Second(Now())
  10. FILE_NAME = ".\Reports\AD_Users" & TIME_DATE_FORMAT & ".csv"
  11.  
  12. Dim fso, cn, cmd, ou, rs, objStream, OutputBuilder, outFile
  13.  
  14. Set fso = CreateObject("Scripting.FileSystemObject")
  15.  
  16. Set cn = CreateObject("ADODB.Connection")
  17. cn.Provider = "ADsDSOObject"
  18. cn.Open "Active Directory Provider"
  19. Set cmd = CreateObject("ADODB.Command")
  20. Set cmd.ActiveConnection = cn
  21. ou = "OU=Computers,DC=DOMAINNAME,DC=com"
  22.  
  23. cmd.CommandText = "SELECT name FROM 'LDAP://" & ou & "' WHERE objectClass='Computer' ORDER BY name"
  24. cmd.Properties("Page Size") = 1000
  25. cmd.Properties("Searchscope") = ADS_SCOPE_SUBTREE
  26.  
  27. Set rs = cmd.Execute
  28. rs.MoveFirst
  29. LineCount = rs.RecordCount
  30. rs.MoveFirst
  31.  
  32. Set objStream = FSO.CreateTextFile(FILE_NAME, True, TristateFalse)
  33.  
  34. msgbox ("Beginning Domain Scan (" & LineCount & ")")
  35.  
  36. Do Until rs.EOF
  37.     strComputer = rs(0)
  38.     if strComputer = "" then
  39.         wscript.quit
  40.     else
  41.         OutputBuilder = "" 'RESET OUTPUT BUILDER
  42.         OutputBuilder = strComputer & ","
  43.         Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}").ExecQuery ("select * from Win32_PingStatus where address = '" & strComputer & "'")
  44.         For Each objStatus in objPing
  45.             If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
  46.                 'REQUEST TIME OUT
  47.                 OutputBuilder = OutputBuilder & "DID NOT REPLY" & "," & "NA"
  48.             else
  49.                 'PING RESPONSE
  50.                 set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  51.                 Set colSettings = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
  52.                 For Each objComputer in colSettings
  53.                     If strComputer <> objComputer.name Then
  54.                         OutputBuilder = OutputBuilder & "NAME MISSMATCH"
  55.                     else
  56.                         OutputBuilder = OutputBuilder & objComputer.name & "," & objComputer.username
  57.  
  58.                         'Computer Info.
  59.                         Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
  60.                         Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")
  61.                         For Each objOS in colOperatingSystems
  62.                             dtmBootup = objOS.LastBootUpTime
  63.                             dtmLastBootUpTime = WMIDateStringToDate(dtmBootup)
  64.                             dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)
  65.                             OutputBuilder = OutputBuilder & "," & dtmSystemUptime
  66.  
  67.                             'OutputBuilder = OutputBuilder & "," & objOS.BootDevice
  68.                             'OutputBuilder = OutputBuilder & "," & objOS.BuildNumber
  69.                             'OutputBuilder = OutputBuilder & "," & objOS.BuildType
  70.                             'OutputBuilder = OutputBuilder & "," & objOS.Caption
  71.                             'OutputBuilder = OutputBuilder & "," & objOS.CodeSet
  72.                             'OutputBuilder = OutputBuilder & "," & objOS.CountryCode
  73.                             'OutputBuilder = OutputBuilder & "," & objOS.Debug
  74.                             'OutputBuilder = OutputBuilder & "," & objOS.EncryptionLevel
  75.                             'dtmConvertedDate.Value = objOS.InstallDate
  76.                             'dtmInstallDate = dtmConvertedDate.GetVarDate
  77.                             'OutputBuilder = OutputBuilder & "," & & dtmInstallDate
  78.                             'OutputBuilder = OutputBuilder & "," & objOS.NumberOfLicensedUsers
  79.                             'OutputBuilder = OutputBuilder & "," & objOS.Organization
  80.                             'OutputBuilder = OutputBuilder & "," & objOS.OSLanguage
  81.                             'OutputBuilder = OutputBuilder & "," & objOS.OSProductSuite
  82.                             'OutputBuilder = OutputBuilder & "," & objOS.OSType
  83.                             'OutputBuilder = OutputBuilder & "," & objOS.Primary
  84.                             'OutputBuilder = OutputBuilder & "," & objOS.RegisteredUser
  85.                             'OutputBuilder = OutputBuilder & "," & objOS.SerialNumber
  86.                             OutputBuilder = OutputBuilder & "," & objOS.Description 'Computer Description
  87.                             'OutputBuilder = OutputBuilder & "," & objOS.Version 'OS VERSION
  88.                         Next
  89.  
  90.                         'IPADDRESS
  91.                         Set IPConfigSet = objWMIService.ExecQuery ("Select IPAddress from Win32_NetworkAdapterConfiguration ")
  92.                         For Each IPConfig in IPConfigSet
  93.                             If Not IsNull(IPConfig.IPAddress) Then
  94.                                 For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
  95.                                     If Not IPConfig.IPAddress(i) = "" Then
  96.                                         OutputBuilder = OutputBuilder & "," & IPConfig.IPAddress(i)
  97.                                     Else
  98.                                         OutputBuilder = OutputBuilder & ", NA"
  99.                                     End If
  100.                                 Next
  101.                             End If
  102.                         Next
  103.                     End If
  104.                 Next
  105.             end if
  106.         next
  107.         objStream.WriteLine OutputBuilder 'Builds the Computer Information Output
  108.     end if
  109.     rs.MoveNext
  110. Loop
  111.  
  112. outFile.Close
  113. objStream.Close
  114. msgbox ("Domain Has Been Processed")
  115.  
  116. Set outFile = Nothing
  117. Set objStream = Nothing
  118. Set fso = Nothing
  119.  
  120. Function WMIDateStringToDate(dtmBootup)
  121.     WMIDateStringToDate =  CDate(Mid(dtmBootup, 5, 2) & "/" & _
  122.         Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) _
  123.         & " " & Mid (dtmBootup, 9, 2) & ":" & Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup, 13, 2))
  124. End Function
Advertisement
Add Comment
Please, Sign In to add comment