View difference between Paste ID: c7FMJgdZ and YHKQT70h
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