SHOW:
|
|
- or go back to the newest paste.
| 1 | - | 'MODIEIFED on 09.10.2013 |
| 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 | - | Const ADS_SCOPE_SUBTREE = 2 |
| 4 | + | |
| 5 | - | Const ForAppending = 8 |
| 5 | + | Const ADS_SCOPE_SUBTREE = 2 |
| 6 | Const ForAppending = 8 | |
| 7 | Const TriStateFalse = 0 | |
| 8 | - | TIME_DATE_FORMAT = Year(Now()) & Month(Now()) & Day(Now()) |
| 8 | + | |
| 9 | - | FILE_NAME = ".\Reports\AD_ComputersUsers" & TIME_DATE_FORMAT & ".csv" |
| 9 | + | TIME_DATE_FORMAT = "." & Year(Now()) & Month(Now()) & Day(Now()) & "." & Hour(Now()) & Minute(Now()) & Second(Now()) |
| 10 | - | COMPUTER_LIST_FILE_NAME = ".\Reports\" & TIME_DATE_FORMAT & "AD_Computers.txt" |
| 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")
|
| 14 | + | Set fso = CreateObject("Scripting.FileSystemObject")
|
| 15 | - | 'Set outFile = fso.OpenTextFile(COMPUTER_LIST_FILE_NAME, ForAppending, True) |
| 15 | + | |
| 16 | Set cn = CreateObject("ADODB.Connection")
| |
| 17 | - | Set cn = CreateObject("ADODB.Connection")
|
| 17 | + | cn.Provider = "ADsDSOObject" |
| 18 | - | cn.Provider = "ADsDSOObject" |
| 18 | + | cn.Open "Active Directory Provider" |
| 19 | - | cn.Open "Active Directory Provider" |
| 19 | + | Set cmd = CreateObject("ADODB.Command")
|
| 20 | - | Set cmd = CreateObject("ADODB.Command")
|
| 20 | + | Set cmd.ActiveConnection = cn |
| 21 | - | Set cmd.ActiveConnection = cn |
| 21 | + | ou = "OU=Computers,DC=DOMAINNAME,DC=com" |
| 22 | - | ou = "DC=domain,DC=com" |
| 22 | + | |
| 23 | - | cmd.CommandText = "SELECT name " & _ |
| 23 | + | cmd.CommandText = "SELECT name FROM 'LDAP://" & ou & "' WHERE objectClass='Computer' ORDER BY name" |
| 24 | - | "FROM 'LDAP://" & ou & "' " & _ |
| 24 | + | cmd.Properties("Page Size") = 1000
|
| 25 | - | "WHERE objectClass='computer' " & _ |
| 25 | + | cmd.Properties("Searchscope") = ADS_SCOPE_SUBTREE
|
| 26 | - | "ORDER BY name" |
| 26 | + | |
| 27 | - | cmd.Properties("Page Size") = 1000
|
| 27 | + | Set rs = cmd.Execute |
| 28 | - | cmd.Properties("Searchscope") = ADS_SCOPE_SUBTREE
|
| 28 | + | |
| 29 | LineCount = rs.RecordCount | |
| 30 | - | Set rs = cmd.Execute |
| 30 | + | |
| 31 | ||
| 32 | Set objStream = FSO.CreateTextFile(FILE_NAME, True, TristateFalse) | |
| 33 | ||
| 34 | msgbox ("Beginning Domain Scan (" & LineCount & ")")
| |
| 35 | - | set OutputBuilder = "" |
| 35 | + | |
| 36 | Do Until rs.EOF | |
| 37 | - | msgbox ("Beginning Domain Scan")
|
| 37 | + | strComputer = rs(0) |
| 38 | if strComputer = "" then | |
| 39 | wscript.quit | |
| 40 | - | strcomputer = rs(0) |
| 40 | + | |
| 41 | OutputBuilder = "" 'RESET OUTPUT BUILDER | |
| 42 | - | ' WScript.Echo rs(0) 'popup of every computer outputted to file |
| 42 | + | OutputBuilder = strComputer & "," |
| 43 | - | 'outFile.WriteLine rs(0) |
| 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 strcomputer = "" then |
| 45 | + | If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then |
| 46 | 'REQUEST TIME OUT | |
| 47 | OutputBuilder = OutputBuilder & "DID NOT REPLY" & "," & "NA" | |
| 48 | else | |
| 49 | - | Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery ("select * from Win32_PingStatus where address = '" & strcomputer & "'")
|
| 49 | + | 'PING RESPONSE |
| 50 | set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
| |
| 51 | - | If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then |
| 51 | + | |
| 52 | - | 'request timed out |
| 52 | + | For Each objComputer in colSettings |
| 53 | - | 'msgbox(strcomputer & " did not reply" & vbcrlf & vbcrlf & _ |
| 53 | + | If strComputer <> objComputer.name Then |
| 54 | - | '"Please check the name and try again") |
| 54 | + | OutputBuilder = OutputBuilder & "NAME MISSMATCH" |
| 55 | else | |
| 56 | - | 'PING CHALLANGE |
| 56 | + | OutputBuilder = OutputBuilder & objComputer.name & "," & objComputer.username |
| 57 | ||
| 58 | 'Computer Info. | |
| 59 | - | Set IPConfigSet = objWMIService.ExecQuery ("Select IPAddress from Win32_NetworkAdapterConfiguration ")
|
| 59 | + | Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
|
| 60 | - | For Each objComputer in colSettings |
| 60 | + | Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")
|
| 61 | - | OutputBuilder = objComputer.name & "," & objcomputer.username |
| 61 | + | For Each objOS in colOperatingSystems |
| 62 | dtmBootup = objOS.LastBootUpTime | |
| 63 | - | 'UPTIME |
| 63 | + | dtmLastBootUpTime = WMIDateStringToDate(dtmBootup) |
| 64 | - | Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
|
| 64 | + | dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)
|
| 65 | - | For Each objOS in colOperatingSystems |
| 65 | + | OutputBuilder = OutputBuilder & "," & dtmSystemUptime |
| 66 | - | dtmBootup = objOS.LastBootUpTime |
| 66 | + | |
| 67 | - | dtmLastBootUpTime = WMIDateStringToDate(dtmBootup) |
| 67 | + | 'OutputBuilder = OutputBuilder & "," & objOS.BootDevice |
| 68 | - | dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)
|
| 68 | + | 'OutputBuilder = OutputBuilder & "," & objOS.BuildNumber |
| 69 | - | OutputBuilder = OutputBuilder & "," & dtmSystemUptime |
| 69 | + | 'OutputBuilder = OutputBuilder & "," & objOS.BuildType |
| 70 | - | Next |
| 70 | + | 'OutputBuilder = OutputBuilder & "," & objOS.Caption |
| 71 | 'OutputBuilder = OutputBuilder & "," & objOS.CodeSet | |
| 72 | - | 'IPADDRESS |
| 72 | + | 'OutputBuilder = OutputBuilder & "," & objOS.CountryCode |
| 73 | - | For Each IPConfig in IPConfigSet |
| 73 | + | 'OutputBuilder = OutputBuilder & "," & objOS.Debug |
| 74 | - | If Not IsNull(IPConfig.IPAddress) Then |
| 74 | + | 'OutputBuilder = OutputBuilder & "," & objOS.EncryptionLevel |
| 75 | - | For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress) |
| 75 | + | 'dtmConvertedDate.Value = objOS.InstallDate |
| 76 | - | If Not IPConfig.IPAddress(i) = "" Then |
| 76 | + | 'dtmInstallDate = dtmConvertedDate.GetVarDate |
| 77 | - | OutputBuilder = OutputBuilder & "," & IPConfig.IPAddress(i) |
| 77 | + | 'OutputBuilder = OutputBuilder & "," & & dtmInstallDate |
| 78 | - | Else |
| 78 | + | 'OutputBuilder = OutputBuilder & "," & objOS.NumberOfLicensedUsers |
| 79 | - | OutputBuilder = OutputBuilder & ", NA" |
| 79 | + | 'OutputBuilder = OutputBuilder & "," & objOS.Organization |
| 80 | - | End If |
| 80 | + | 'OutputBuilder = OutputBuilder & "," & objOS.OSLanguage |
| 81 | - | Next |
| 81 | + | 'OutputBuilder = OutputBuilder & "," & objOS.OSProductSuite |
| 82 | - | End If |
| 82 | + | 'OutputBuilder = OutputBuilder & "," & objOS.OSType |
| 83 | - | Next |
| 83 | + | 'OutputBuilder = OutputBuilder & "," & objOS.Primary |
| 84 | 'OutputBuilder = OutputBuilder & "," & objOS.RegisteredUser | |
| 85 | - | objStream.WriteLine OutputBuilder 'Builds the Final Output |
| 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 | - | rs.MoveNext |
| 91 | + | Set IPConfigSet = objWMIService.ExecQuery ("Select IPAddress from Win32_NetworkAdapterConfiguration ")
|
| 92 | - | Loop |
| 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 | - | Set outFile = Nothing |
| 98 | + | OutputBuilder = OutputBuilder & ", NA" |
| 99 | End If | |
| 100 | Next | |
| 101 | End If | |
| 102 | - | Function WMIDateStringToDate(dtmBootup) |
| 102 | + | Next |
| 103 | - | WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _ |
| 103 | + | End If |
| 104 | - | Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) _ |
| 104 | + | |
| 105 | - | & " " & Mid (dtmBootup, 9, 2) & ":" & Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup, 13, 2)) |
| 105 | + | |
| 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 |