bsharath
asked on
Can i know what this script does...
Hi,
I have this script which i remember i have used it .And was very useful..
Option Explicit
Const ADS_SCOPE_SUBTREE = 2
Const WBEM_RETURN_IMMEDIATELY = &h10
Const WBEM_FORWARD_ONLY = &h20
'
' Functions
'
Function GetForestContexts
   Dim objRootDSE, objForestRoot
   Dim strForestRoot, strSubDomain
   Dim arrDomainDNs(), arrTemp
   Set objRootDSE = GetObject("LDAP://RootDSE" )
   strForestRoot = objRootDSE.Get("rootDomain NamingCont ext")
   Set objForestRoot = GetObject("LDAP://" & strForestRoot)
   ReDim Preserve arrDomainDNs(0)
   arrDomainDNs(0) = strForestRoot
   ' Rebuild Domains List removing the DNS and Configuration contexts
   arrTemp = objForestRoot.Get("subRefs ")
   For Each strSubDomain in arrTemp
      If (InStr(strSubDomain, "DnsZones") = 0) And (InStr(strSubDomain, "Configuration") = 0) Then
         ReDim Preserve arrDomainDNs(UBound(arrDom ainDNs) + 1)
         arrDomainDNs(UBound(arrDom ainDNs)) = strSubDomain
      End If
   Next
   Set objForestRoot = Nothing
   Set objRootDSE = Nothing
  Â
   GetForestContexts = arrDomainDNs
End Function
Function WMIStringToDate(dtmDate)
   WMIStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
      Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
      & " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2))
End Function
Function GetNetworkAddress(strIP, intMaskLength)
   Dim strOctet, strBinOctet, strBinIP, strBinMask, strIPBit, strMaskBit
   Dim strBinNetwork, strNetworkAddress
   Dim i, intTemp, intOctet, intBit
   Dim arrOctets
   strBinIP = ConvertIPToBinary(strIP)
   For i = 1 to 32
      If i <= intMaskLength Then
         strBinMask = strBinMask & "1"
      Else
         strBinMask = strBinMask & "0"
      End If
      If i = 8 Or i = 16 Or i = 24 Then
         strBinMask = strBinMask & "."
      End If
   Next
   For i = 1 to Len(strBinIP)
      strIPBit = Mid(strBinIP, i, 1)
      strMaskBit = Mid(strBinMask, i, 1)
      If strIPBit = "1" And strMaskBit = "1" Then
         strBinNetwork = strBinNetwork & "1"
      ElseIf strIPBit = "." Then
         strBinNetwork = strBinNetwork & strIPBit
      Else
         strBinNetwork = strBinNetwork & "0"
      End If
   Next
   arrOctets = Split(strBinNetwork, ".")
   For Each strOctet in arrOctets
      intOctet = 0
      For i = 0 to 7
         intBit = CInt(Mid(strOctet, i + 1, 1))
         If intBit = 1 Then
            intOctet = intOctet + 2^(7 - i)
         End If
      Next
      strNetworkAddress = strNetworkAddress & "." & CStr(intOctet)
   Next
   GetNetworkAddress = Right(strNetworkAddress, Len(strNetworkAddress) - 1)
End Function
Function ConvertIPToBinary(strIP)
   Dim strOctet, strBinOctet, strBinIP
   Dim arrOctets
   Dim intTemp, i
   arrOctets = Split(strIP, ".")
   For Each strOctet in arrOctets
      intTemp  = 0
      strBinOctet = ""
      For i = 0 To 7
         If intTemp + 2^(7 - i) <= CInt(strOctet) Then
            strBinOctet = strBinOctet & "1"
            intTemp = intTemp + 2^(7 - i)
         Else
            strBinOctet = strBinOctet & "0"
         End If
      Next
      strBinIP = strBinIP & "." & strBinOctet
   Next
   ConvertIPToBinary = Right(strBinIP, Len(strBinIP) - 1)
End Function
Function GetLocalGroup(strServer, strGroupName)
   Dim objGroup, objMember
   Dim arrTemp()
   Dim intCounter
   On Error Resume Next
   Set objGroup = GetObject("WinNT://" & strServer & "/" & strGroupName & ", group")
   If Err.Number = 0 Then
      intCounter = 0
      For Each objMember in objGroup.Members
         ReDim Preserve arrTemp(intCounter)
         arrTemp(intCounter) = objMember.Name
         intCounter = intCounter + 1
      Next
      GetLocalGroup = arrTemp
   End If
End Function
'
' Subroutines
'
Sub GetConfiguredSubnets
   Dim objRootDSE, objSubnets, objSubnet
   Dim strSubnets, strNetworkAddress, strLocation
   Dim arrTemp
   Dim intMaskLength
   Set objRootDSE = GetObject("LDAP://RootDSE" )
   strSubnets = "CN=Subnets,CN=Sites," & objRootDSE.GEt("configurat ionNamingC ontext")
   Set objRootDSE = Nothing
   Set objSubnets = GetObject("LDAP://" & strSubnets)
   For Each objSubnet in objSubnets
      arrTemp = Split(objSubnet.Get("name" ), "/")
      strNetworkAddress = arrTemp(0)
      strNetworkAddress = strNetworkAddress
     Â
      On Error Resume Next
      strLocation = "" : strLocation = objSubnet.Get("location")
      On Error Goto 0
      If Not objConfiguredSubnets.Exist s(strNetwo rkAddress) Then
         objConfiguredSubnets.Add strNetworkAddress, strLocation
      End If
   Next
   Set objSubnets = Nothing
End Sub
Sub FindComputers(strDomainPat h)
   Dim objConnection, objCommand, objRecordSet
   Set objConnection = CreateObject("ADODB.Connec tion")
   objConnection.Provider = "ADsDSOObject"
   objConnection.Open "Active Directory Provider"
   Set objCommand = CreateObject("ADODB.Comman d")
   objCommand.ActiveConnectio n = objConnection
   objCommand.CommandText = "SELECT distinguishedName, name, operatingSystem " &_
      "FROM 'LDAP://" & strDomainPath & "' WHERE objectClass='computer'"
   objCommand.Properties("Pag e Size") = 1000
   objCommand.Properties("Tim eout") = 600
   objCommand.Properties("Sea rchscope") = ADS_SCOPE_SUBTREE
   objCommand.Properties("Cac he Results") = False
   Set objRecordSet = objCommand.Execute
   While Not objRecordSet.EOF
      If InStr(1, objRecordSet.Fields("opera tingSystem "), "Server", VbTextCompare) > 1 Then
         WriteInventory objRecordSet.Fields("name" ), objRecordSet.Fields("disti nguishedNa me")
      End If
      objRecordSet.MoveNext
   Wend
   objConnection.Close
   Set objRecordSet = Nothing
   Set objCommand = Nothing
   Set objConnection = Nothing
End Sub
Sub WriteInventory(strComputer Name, strDN)
   Dim objFile, objFolder
   Dim strInvFile, strGroup, strAdministrator, strMyDocuments
   Dim strKeyPath, strValueName, strData, strScriptLastRan
   Dim arrAdministrators, arrTemp
   Dim dblSize
   Dim intCounter
   strInvFile = "C:\" & strComputerName & ".xml"
  Â
   WScript.Echo strInvFile
  Â
   Set objFile = objFileSystem.OpenTextFile (strInvFil e, 2, True, 0)
   objFile.WriteLine "<?xml version='1.0' encoding='ISO8859-1' ?>"
   objFile.WriteLine "<computerdata>"
   objFile.WriteLine "<currentruntime>" & CStr(Now()) & "</currentruntime>"
   objFile.WriteLine "<name>" & strComputerName & "</name>"
   objFile.WriteLine "<dn>" & strDN & "</dn>"
  Â
   objFile.WriteLine "<lastuser></lastuser>"
   WriteSettingsFromWMI objFile, strComputerName
   On Error Resume Next
   arrAdministrators = GetLocalGroup(strComputerN ame, "Administrators")
   On Error Goto 0
   intCounter = 0
   objFile.WriteLine "<localadministrators>"
   If IsArray(arrAdministrators) Then
      For Each strAdministrator in arrAdministrators
         objFile.WriteLine "<administrator>" & strAdministrator &_
            "</administrator>"
      Next
   End If
   objFile.WriteLine "</localadministrators>"
   objFile.WriteLine "</computerdata>"
   objFile.Close
   Set objFile = Nothing
End Sub
Sub WriteSettingsFromWMI(objFi le, strComputerName)
   Dim objWMICimV2, objItem
   Dim colNetwork, colShares, colOperatingSystem, colComputerSystem, colProcessor
   Dim colBIOS, colSoftware, colServices, colPhysicalMemory, colVideoController
   Dim colSoundDevice, colDesktopMonitor, colFloppyDrive, colSerialPort, colPhysicalMemoryArray
   Dim colBattery, colPrinters, colLogicalDisk
   Dim strCompData, strOSData, strMemoryData, strIPAddress, strPath, strCompDomainRole, strDisplayName
   Dim strNetworkData, strIPData, strAddress, strOSName, strSubnet, strNetworkAddress
   Dim arrTemp
   Dim intBatteryCount, intSubnet
   Dim booListAdapter
   On Error Resume Next : Err.Clear
   Set objWMICimV2 = GetObject("winmgmts://" & strComputername & "/root/CIMV2")
   strOSData = "<operatingsystem>" & VbCrLf
   strCompData = "<computersystem>" & VbCrLf
   strNetworkData = "<network>" & VbCrLf
     Â
   ' strOSName is declared globally
   strMemoryData = "<memory>" & VbCrLf
   Set colOperatingSystem = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_OperatingSystem",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   For Each objItem in colOperatingSystem
      arrTemp = Split(objItem.Name, "|")
      strOSName = arrTemp(0)
      strOSData = strOSData & "<osname>" & strOSName & "</osname>" & VbCrLf
      strOSData = strOSData & "<csdversion>" & objItem.CSDVersion & "</csdversion>" & VbCrLf
      strOSData = strOSData & "<windir>" & objItem.WindowsDirectory & "</windir>" & VbCrLf
      strOSData = strOSData & "<locale>" & objItem.Locale & "</locale>" & VbCrLf
      strOSData = strOSData & "<buildnumber>" & objItem.BuildNumber & "</buildnumber>" & VbCrLf
      strOSData = strOSData & "<serialnumber>" & objItem.SerialNumber & "</serialnumber>" & VbCrLf
      strOSData = strOSData & "<pagefilesize>" & Round(objItem.SizeStoredIn PagingFile s/(1024^2) , 2) &_
         "Gb</pagefilesize>" & VbCrLf
      strOSData = strOSData & "<lastboottime>" & WMIStringToDate(objItem.La stBootUpTi me) &_
         "</lastboottime>" & VbCrLf
        Â
      strMemoryData = strMemoryData & "<freephysicalmemory>" &_
         Round(objItem.FreePhysical Memory/102 4, 2) & "Mb</freephysicalmemory>" & VbCrLf
      strMemoryData = strMemoryData & "<freevirtualmemory>" &_
         Round(objItem.FreeVirtualM emory/1024 , 2) & "Mb</freevirtualmemory>" & VbCrLf
      strMemoryData = strMemoryData & "<totalvirtualmemory>" &_
         Round(objItem.TotalVirtual MemorySize /1024, 2) & "Mb</totalvirtualmemory>" & VbCrLf
   Next
   Set colOperatingSystem = Nothing
   strCompData = strCompData & "<systemtype>Server</syste mtype>" & VbCrLf
  Â
   Set colComputerSystem = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_ComputerSystem",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   For Each objItem in colComputerSystem
      Select Case objItem.DomainRole
         Case 0
            strCompDomainRole = "Standalone Workstation"
         Case 1
            strCompDomainRole = "Member Workstation"
         Case 2
            strCompDomainRole = "Standalone Server"
         Case 3
            strCompDomainRole = "Member Server"
         Case 4
            strCompDomainRole = "Backup Domain Controller"
         Case 5
            strCompDomainRole = "Primary Domain Controller"
      End Select
      strCompData = strCompData & "<domainrole>" & strCompDomainRole & "</domainrole>" & VbCrLf
      strCompData = strCompData & "<manufacturer>" & objItem.Manufacturer &_
         "</manufacturer>" & VbCrLf
      strCompData = strCompData & "<model>" & objItem.Model & "</model>" & VbCrLf
      strMemoryData = strMemoryData & "<physicalmemory>" & Round(objItem.TotalPhysica lMemory/(1 024^2), 2) &_
         "Mb</physicalmemory>" & VbCrLf
      strCompData = strCompData & "<timezone>" & objItem.CurrentTimeZone & "</timezone>" & VbCrLf
   Next
   Set colComputerSystem = Nothing
   Set colBIOS = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_BIOS",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   For Each objItem in colBIOS
      strCompData = strCompData & "<serialnumber>" & objItem.SerialNumber &_
         "</serialnumber>" & VbCrLf
   Next
   Set colBIOS = Nothing
   Set colShares = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_Share",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strOSData = strOSData & "<shares>" & VbCrLf
   For Each objItem in colShares
      strOSData = strOSData & "<share>" & VbCrLf
      strOSData = strOSData & "<name>" & objItem.Name & "</name>" & VbCrLf
      strOSData = strOSData & "<caption>" & objItem.Caption & "</caption>" & VbCrLf
      strOSData = strOSData & "<path>" & objItem.Path & "</path>" & VbCrLf
      strOSData = strOSData & "</share>" & VbCrLf
   Next
   strOSData = strOSData & "</shares>" & VbCrLf
   Set colShares = Nothing
   Set colServices = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_Service",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strOSData = strOSData & "<services>" & VbCrLf
   For Each objItem in colServices
      strOSData = strOSData & "<service>" & VbCrLf
      strOSData = strOSData & "<name>" & Replace(objItem.DisplayNam e, "&", "&") & "</name>" & VbCrLf
      strOSData = strOSData & "<status>" & objItem.State & "</status>" & VbCrLf
      strOSData = strOSData & "</service>" & VbCrLf
   Next
   strOSData = strOSData & "</services>" & VbCrLf
   Set colServices = Nothing
  Â
   Set colPrinters = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_Printer",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strOSData = strOSData & "<printers>" & VbCrLf
   For Each objItem in colPrinters
      strOSData = strOSData & "<printer>" & VbCrLf
      strOSData = strOSData & "<name>" & objItem.Name & "</name>" & VbCrLf
      strOSData = strOSData & "<server>" & objItem.ServerName & "</server>" & VbCrLf
      strOSData = strOSData & "<share>" & objItem.ShareName & "</share>" & VbCrLf
      strOSData = strOSData & "<network>" & objItem.Network & "</network>" & VbCrLf
      strOSData = strOSData & "<port>" & objItem.PortName & "</port>" & VbCrLf
      strOSData = strOSData & "</printer>" & VbCrLf
   Next
   strOSData = strOSData & "</printers>" & VbCrLf
   Set colPrinters = Nothing
   Set colSoftware = objWMIDefault.ExecQuery("S ELECT * FROM InstalledSoftware",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strOSData = strOSData & "<installedsoftware>" & VbCrLf
   For Each objItem in colSoftware
      strOSData = strOSData & "<application>" & VbCrLf
      strDisplayName = Replace(objItem.DisplayNam e, "&", "&")
      strOSData = strOSData & "<name>" & strDisplayName & "</name>" & VbCrLf
      strOSData = strOSData & "<version>" & objItem.DisplayVersion & "</version>" & VbCrLf
      strOSData = strOSData & "<installdate>" & objItem.InstallDate & "</installdate>" & VbCrLf
      If Not IsNull(objItem.UninstallSt ring) Then
         strPath = Replace(objItem.UninstallS tring, "&", "")
         strOSData = strOSData & "<path>" & strPath & "</path>" & VbCrLf
      End If
      strOSData = strOSData & "</application>" & VbCrLf
   Next
   strOSData = strOSData & "</installedsoftware>" & VbCrLf
   Set colSoftware = Nothing
   Set colPhysicalMemoryArray = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_PhysicalMemoryArray" ,_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   For Each objItem in colPhysicalMemoryArray
      If objItem.Use = 3 Then
         strMemoryData = strMemoryData & "<systemmemorydevices>" & objItem.MemoryDevices &_
            "</systemmemorydevices>" & VbCrLf
      End If
   Next
   Set colPhysicalMemoryArray = Nothing
   Set colPhysicalMemory = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_PhysicalMemory",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strMemoryData = strMemoryData & "<memorymodules>" & VbCrLf
   For Each objItem in colPhysicalMemory
      strMemoryData = strMemoryData & "<module>" & VbCrLf
      strMemoryData = strMemoryData & "<locator>" & objItem.DeviceLocator & "</locator>" & VbCrLf
      strMemoryData = strMemoryData & "<capacity>" &_
         Round(objItem.Capacity/(10 24^2), 2) & "Mb</capacity>" & VbCrLf
      strMemoryData = strMemoryData & "<speed>" & objItem.Speed & "MHz</speed>" & VbCrLf
      strMemoryData = strMemoryData & "</module>" & VbCrLf
   Next
  Â
   strMemoryData = strMemoryData & "</memorymodules>" & VbCrLf
   Set colPhysicalMemory = Nothing
   strMemoryData = strMemoryData & "</memory>" & VbCrLf
   strCompData = strCompData & strMemoryData
   Set colProcessor = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_Processor",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<processors>" & VbCrLf
   For Each objItem in colProcessor
      strCompData = strCompData & "<processor>" & VbCrLf
      strCompData = strCompData & "<name>" & objItem.Name & "</name>" & VbCrLf
      strCompData = strCompData & "<manufacturer>" & objItem.Manufacturer &_
         "</manufacturer>" & VbCrLf
      strCompData = strCompData & "<speed>" & objItem.MaxClockSpeed & "</speed>" & VbCrLf
      strCompData = strCompData & "</processor>" & VbCrLf
   Next
   strCompData = strCompData & "</processors>" & VbCrLf
   Set colProcessor = Nothing
   Set colBIOS = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_BIOS",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<bios>" & VbCrLf
   For Each objItem in colBIOS
      strCompData = strCompData & "<version>" & objItem.Version & "</version>" & VbCrLf
      strCompData = strCompData & "<biosversion>" & Join(objItem.BIOSVersion, ",") &_
         "</biosversion>" & VbCrLf
      strCompData = strCompData & "<releasedate>" & WMIStringToDate(objItem.Re leaseDate) &_
         "</releasedate>" & VbCrLf
   Next
   strCompData = strCompData & "</bios>" & VbCrLf
   Set colBIOS = Nothing
   Set colDesktopMonitor = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_DesktopMonitor",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<monitor>" & VbCrLf
   For Each objItem in colDesktopMonitor
      strCompData = strCompData & "<name>" & objItem.Name & "</name>" & VbCrLf
      strCompData = strCompData & "<manufacturer>" & objItem.MonitorManufacture r &_
         "</manufacturer>" & VbCrLf
   Next
   strCompData = strCompData & "</monitor>" & VbCrLf
   Set colDesktopMonitor = Nothing
   Set colVideoController = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_VideoController",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<videocontrollers>" & VbCrLf
   For Each objItem in colVideoController
      strCompData = strCompData & "<controller>" & VbCrLf
      strCompData = strCompData & "<description>" & objItem.Description & "</description>" & VbCrLf
      strCompData = strCompData & "<videomemory>" & Round((objItem.AdapterRAM/ (1024^2))) &_
         "Mb</videomemory>" & VbCrLf
      strCompData = strCompData & "<horizontalresolution>" & objItem.CurrentHorizontalR esolution &_
         "</horizontalresolution>" & VbCrLf
      strCompData = strCompData & "<verticalresolution>" & objItem.CurrentVerticalRes olution &_
         "</verticalresolution>" & VbCrLf
      strCompData = strCompData & "<bitsperpixel>" & objItem.CurrentBitsPerPixe l & "</bitsperpixel>" & VbCrLf
      strCompData = strCompData & "<refreshrate>" & objItem.CurrentRefreshRate & "</refreshrate>" & VbCrLf
      strCompData = strCompData & "</controller>"
   Next
   strCompData = strCompData & "</videocontrollers>" & VbCrLf
   Set colVideoController = Nothing
  Â
   Set colSoundDevice = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_SoundDevice",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<sounddevice>" & VbCrLf
   For Each objItem in colSoundDevice
      If Not IsNull(objItem.Description ) Then
         strCompData = strCompData & "<description>" & objItem.Description & "</description>" & VbCrLf
      End If
   Next
   strCompData = strCompData & "</sounddevice>" & VbCrLf
   Set colSoundDevice = Nothing
   Set colFloppyDrive = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_FloppyDrive",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<floppydrive>" & VbCrLf
   For Each objItem in colFloppyDrive
      If Not IsNull(objItem.Availabilit y) Then
         strCompData = strCompData & "<description>" & objItem.Description & "</description>" & VbCrLf
         strCompData = strCompData & "<caption>" & objItem.Caption & "</caption>" & VbCrLf
         If objItem.Availability = 3 Then
            strCompData = strCompData & "<availability>Online</ava ilability> " & VbCrLf
         Else
            strCompData = strCompData & "<availability>Offline</av ailability >" & VbCrLf
         End If
      End If
   Next
   strCompData = strCompData & "</floppydrive>" & VbCrLf
   Set colFloppyDrive = Nothing
   Set colSerialPort = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_SerialPort",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<modem>" & VbCrLf
   For Each objItem in colSerialPort
      If InStr(1, objItem.Caption, "modem", VbTextCompare) > 0 Then
         strCompData = strCompData & "<description>" & objItem.Description & "</description>" & VbCrLf
      End If
   Next
   strCompData = strCompData & "</modem>" & VbCrLf
   Set colSerialPort = Nothing
   Set colLogicalDisk = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_LogicalDisk",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<logicaldisk>" & VbCrLf
   For Each objItem in colLogicalDisk
      If objItem.DriveType = 3 Then
         strCompData = strCompData & "<disk>" & VbCrLf
         strCompData = strCompData & "<name>" & objItem.Name & "</name>" & VbCrLf
         strCompData = strCompData & "<size>" & Round(objItem.Size/(1024^3 )) & "Gb</size>" & VbCrLf
         strCompData = strCompData & "<freespace>" & Round(objItem.FreeSpace/(1 024^3)) & "Gb</freespace>" & VbCrLf
         strCompData = strCompData & "<volumename>" & objItem.VolumeName & "</volumename>" & VbCrLf
         strCompData = strCompData & "</disk>" & VbCrLf
      End If
   Next
   strCompData = strCompData & "</logicaldisk>" & VbCrLf
   Set colLogicalDisk = Nothing
   strNetworkData = strNetworkData & "<dnsquery>" & VbCrLf
   arrTemp = GetDNSAddresses(strCompute rName)
   For Each strAddress in arrTemp
      strNetworkData = strNetworkData & "<ipaddress>" & strAddress & "</ipaddress>" & VbCrLf
   Next
   strNetworkData = strNetworkData & "</dnsquery>" & VbCrLf
  Â
   Set colNetwork = objWMICimV2.ExecQuery("SEL ECT * FROM Win32_NetworkAdapterConfig uration",_
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strNetworkData = strNetworkData & "<networkadapters>" & VbCrLf
   For Each objItem in colNetwork
      If Not IsNUll(objItem.IPAddress) And objItem.IPEnabled = True Then
         booListAdapter = False
         For Each strIPAddress in objItem.IPAddress
            If strIPAddress <> "0.0.0.0" and strIPAddress <> "" Then
               booListAdapter = True
               strIPData = strIPData & "<ipaddress>" & strIPAddress &_
                  "</ipaddress>" & VbCrLf
               If strIPAddress = arrTemp(0) Then
                  strSubnet = Join(objItem.IPSubnet)
               End If
            End If
         Next
  Â
         If booListAdapter = True Then
            strNetworkData = strNetworkData & "<adapter>" & VbCrLf
            strNetworkData = strNetworkData & "<description>" & objItem.Description &_
               "</description>" & VbCrLf
            strNetworkData = strNetworkData & "<ipaddresses>" & VbCrLf
            strNetworkData = strNetworkData & strIPData & VbCrLf
            strNetworkData = strNetworkData & "</ipaddresses>" & VbCrLf
            strNetworkData = strNetworkData & "<macaddress>" & objItem.MACAddress &_
               "</macaddress>" & VbCrLf
            strNetworkData = strNetworkData & "<dnsservers>" & Join(objItem.DNSServerSear chOrder, ",") &_
               "</dnsservers>" & VbCrLf
            strNetworkData = strNetworkData & "</adapter>" & VbCrLf
         End If
      End If
   Next
   strNetworkData = strNetworkData & "</networkadapters>" & VbCrLf
   Set colNetwork = Nothing
   intSubnet = UBound(Split(ConvertIPToBi nary(strSu bnet), "1"))
   If objConfiguredSubnets.Exist s(GetNetwo rkAddress( arrTemp(0) , intSubnet)) Then
      strNetworkData = strNetworkData & "<site>" &_
         objConfiguredSubnets(GetNe tworkAddre ss(arrTemp (0), intSubnet)) & "</site>" & VbCrLf
   ElseIf objConfiguredSubnets.Exist s(GetNetwo rkAddress( arrTemp(0) , 18)) Then
      strNetworkData = strNetworkData & "<site>" &_
         objConfiguredSubnets(GetNe tworkAddre ss(arrTemp (0), 18)) & "</site>" & VbCrLf
   Else
      strNetworkData = strNetworkData & "<site></site>" & VbCrLf
   End If
   On Error Goto 0
   strCompData = strCompData & "</computersystem>" & VbCrLf
   strOSData = strOSData & "</operatingsystem>" & VbCrLf
   strNetworkData = strNetworkData & "</network>" & VbCrLf
   objFile.WriteLine strOSData
   objFile.WriteLine strCompData
   objFile.WriteLine strNetworkData
   Set objWMICimV2 = Nothing
End Sub
Function GetDNSAddresses(strCompute rName)
   Dim objShell, objScriptExec, objStdOut
   Dim strIPAddress, strOut
   Dim arrIPAddresses
   Set objShell = CreateObject("WScript.Shel l")
   Set objScriptExec = objShell.Exec("nslookup " & strComputerName)
   Set objStdOut = objScriptExec.StdOut
  Â
   strIPAddress = ""
   Do Until objStdOut.AtEndOfStream
      strOut = objStdOut.ReadLine
      If InStr(strOut, "Name:") Then
         strIPAddress = objStdOut.ReadLine
  Â
         If InStr(strIPAddress, "Address:") > 0 Then
            strIPAddress = Trim(Replace(strIPAddress, "Address:", ""))
         ElseIf InStr(strIPAddress, "Addresses:") > 0 Then
            strIPAddress = Trim(Replace(strIPAddress, "Addresses:", ""))
         End If
      End If
   Loop
  Â
   GetDNSAddresses = Split(strIPAddress, ", ")
  Â
   Set objStdOut = Nothing
   Set objScriptExec = Nothing
   Set objShell = Nothing
End Function
'
' Main Code
'
Dim objFileSystem, objConfiguredSubnets, objWMIService
Dim strDN, strDomainName
Dim arrDomainDNs
Set objConfiguredSubnets = CreateObject("Scripting.Di ctionary")
GetConfiguredSubnets
Set objFileSystem = CreateObject("Scripting.Fi leSystemOb ject")
arrDomainDNs = GetForestContexts
For Each strDN in arrDomainDNs
  Â
   strDomainName = Replace(strDN, ",DC=", ".")
   strDomainName = Replace(strDomainName, "DC=", "")
  Â
   FindComputers strDomainName & "/" & strDN
Next
Set objFileSystem = Nothing
Can i know what this script is and what it does.
Regards
Sharath
I have this script which i remember i have used it .And was very useful..
Option Explicit
Const ADS_SCOPE_SUBTREE = 2
Const WBEM_RETURN_IMMEDIATELY = &h10
Const WBEM_FORWARD_ONLY = &h20
'
' Functions
'
Function GetForestContexts
   Dim objRootDSE, objForestRoot
   Dim strForestRoot, strSubDomain
   Dim arrDomainDNs(), arrTemp
   Set objRootDSE = GetObject("LDAP://RootDSE"
   strForestRoot = objRootDSE.Get("rootDomain
   Set objForestRoot = GetObject("LDAP://" & strForestRoot)
   ReDim Preserve arrDomainDNs(0)
   arrDomainDNs(0) = strForestRoot
   ' Rebuild Domains List removing the DNS and Configuration contexts
   arrTemp = objForestRoot.Get("subRefs
   For Each strSubDomain in arrTemp
      If (InStr(strSubDomain, "DnsZones") = 0) And (InStr(strSubDomain, "Configuration") = 0) Then
         ReDim Preserve arrDomainDNs(UBound(arrDom
         arrDomainDNs(UBound(arrDom
      End If
   Next
   Set objForestRoot = Nothing
   Set objRootDSE = Nothing
  Â
   GetForestContexts = arrDomainDNs
End Function
Function WMIStringToDate(dtmDate)
   WMIStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
      Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
      & " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2))
End Function
Function GetNetworkAddress(strIP, intMaskLength)
   Dim strOctet, strBinOctet, strBinIP, strBinMask, strIPBit, strMaskBit
   Dim strBinNetwork, strNetworkAddress
   Dim i, intTemp, intOctet, intBit
   Dim arrOctets
   strBinIP = ConvertIPToBinary(strIP)
   For i = 1 to 32
      If i <= intMaskLength Then
         strBinMask = strBinMask & "1"
      Else
         strBinMask = strBinMask & "0"
      End If
      If i = 8 Or i = 16 Or i = 24 Then
         strBinMask = strBinMask & "."
      End If
   Next
   For i = 1 to Len(strBinIP)
      strIPBit = Mid(strBinIP, i, 1)
      strMaskBit = Mid(strBinMask, i, 1)
      If strIPBit = "1" And strMaskBit = "1" Then
         strBinNetwork = strBinNetwork & "1"
      ElseIf strIPBit = "." Then
         strBinNetwork = strBinNetwork & strIPBit
      Else
         strBinNetwork = strBinNetwork & "0"
      End If
   Next
   arrOctets = Split(strBinNetwork, ".")
   For Each strOctet in arrOctets
      intOctet = 0
      For i = 0 to 7
         intBit = CInt(Mid(strOctet, i + 1, 1))
         If intBit = 1 Then
            intOctet = intOctet + 2^(7 - i)
         End If
      Next
      strNetworkAddress = strNetworkAddress & "." & CStr(intOctet)
   Next
   GetNetworkAddress = Right(strNetworkAddress, Len(strNetworkAddress) - 1)
End Function
Function ConvertIPToBinary(strIP)
   Dim strOctet, strBinOctet, strBinIP
   Dim arrOctets
   Dim intTemp, i
   arrOctets = Split(strIP, ".")
   For Each strOctet in arrOctets
      intTemp  = 0
      strBinOctet = ""
      For i = 0 To 7
         If intTemp + 2^(7 - i) <= CInt(strOctet) Then
            strBinOctet = strBinOctet & "1"
            intTemp = intTemp + 2^(7 - i)
         Else
            strBinOctet = strBinOctet & "0"
         End If
      Next
      strBinIP = strBinIP & "." & strBinOctet
   Next
   ConvertIPToBinary = Right(strBinIP, Len(strBinIP) - 1)
End Function
Function GetLocalGroup(strServer, strGroupName)
   Dim objGroup, objMember
   Dim arrTemp()
   Dim intCounter
   On Error Resume Next
   Set objGroup = GetObject("WinNT://" & strServer & "/" & strGroupName & ", group")
   If Err.Number = 0 Then
      intCounter = 0
      For Each objMember in objGroup.Members
         ReDim Preserve arrTemp(intCounter)
         arrTemp(intCounter) = objMember.Name
         intCounter = intCounter + 1
      Next
      GetLocalGroup = arrTemp
   End If
End Function
'
' Subroutines
'
Sub GetConfiguredSubnets
   Dim objRootDSE, objSubnets, objSubnet
   Dim strSubnets, strNetworkAddress, strLocation
   Dim arrTemp
   Dim intMaskLength
   Set objRootDSE = GetObject("LDAP://RootDSE"
   strSubnets = "CN=Subnets,CN=Sites," & objRootDSE.GEt("configurat
   Set objRootDSE = Nothing
   Set objSubnets = GetObject("LDAP://" & strSubnets)
   For Each objSubnet in objSubnets
      arrTemp = Split(objSubnet.Get("name"
      strNetworkAddress = arrTemp(0)
      strNetworkAddress = strNetworkAddress
     Â
      On Error Resume Next
      strLocation = "" : strLocation = objSubnet.Get("location")
      On Error Goto 0
      If Not objConfiguredSubnets.Exist
         objConfiguredSubnets.Add strNetworkAddress, strLocation
      End If
   Next
   Set objSubnets = Nothing
End Sub
Sub FindComputers(strDomainPat
   Dim objConnection, objCommand, objRecordSet
   Set objConnection = CreateObject("ADODB.Connec
   objConnection.Provider = "ADsDSOObject"
   objConnection.Open "Active Directory Provider"
   Set objCommand = CreateObject("ADODB.Comman
   objCommand.ActiveConnectio
   objCommand.CommandText = "SELECT distinguishedName, name, operatingSystem " &_
      "FROM 'LDAP://" & strDomainPath & "' WHERE objectClass='computer'"
   objCommand.Properties("Pag
   objCommand.Properties("Tim
   objCommand.Properties("Sea
   objCommand.Properties("Cac
   Set objRecordSet = objCommand.Execute
   While Not objRecordSet.EOF
      If InStr(1, objRecordSet.Fields("opera
         WriteInventory objRecordSet.Fields("name"
      End If
      objRecordSet.MoveNext
   Wend
   objConnection.Close
   Set objRecordSet = Nothing
   Set objCommand = Nothing
   Set objConnection = Nothing
End Sub
Sub WriteInventory(strComputer
   Dim objFile, objFolder
   Dim strInvFile, strGroup, strAdministrator, strMyDocuments
   Dim strKeyPath, strValueName, strData, strScriptLastRan
   Dim arrAdministrators, arrTemp
   Dim dblSize
   Dim intCounter
   strInvFile = "C:\" & strComputerName & ".xml"
  Â
   WScript.Echo strInvFile
  Â
   Set objFile = objFileSystem.OpenTextFile
   objFile.WriteLine "<?xml version='1.0' encoding='ISO8859-1' ?>"
   objFile.WriteLine "<computerdata>"
   objFile.WriteLine "<currentruntime>" & CStr(Now()) & "</currentruntime>"
   objFile.WriteLine "<name>" & strComputerName & "</name>"
   objFile.WriteLine "<dn>" & strDN & "</dn>"
  Â
   objFile.WriteLine "<lastuser></lastuser>"
   WriteSettingsFromWMI objFile, strComputerName
   On Error Resume Next
   arrAdministrators = GetLocalGroup(strComputerN
   On Error Goto 0
   intCounter = 0
   objFile.WriteLine "<localadministrators>"
   If IsArray(arrAdministrators)
      For Each strAdministrator in arrAdministrators
         objFile.WriteLine "<administrator>" & strAdministrator &_
            "</administrator>"
      Next
   End If
   objFile.WriteLine "</localadministrators>"
   objFile.WriteLine "</computerdata>"
   objFile.Close
   Set objFile = Nothing
End Sub
Sub WriteSettingsFromWMI(objFi
   Dim objWMICimV2, objItem
   Dim colNetwork, colShares, colOperatingSystem, colComputerSystem, colProcessor
   Dim colBIOS, colSoftware, colServices, colPhysicalMemory, colVideoController
   Dim colSoundDevice, colDesktopMonitor, colFloppyDrive, colSerialPort, colPhysicalMemoryArray
   Dim colBattery, colPrinters, colLogicalDisk
   Dim strCompData, strOSData, strMemoryData, strIPAddress, strPath, strCompDomainRole, strDisplayName
   Dim strNetworkData, strIPData, strAddress, strOSName, strSubnet, strNetworkAddress
   Dim arrTemp
   Dim intBatteryCount, intSubnet
   Dim booListAdapter
   On Error Resume Next : Err.Clear
   Set objWMICimV2 = GetObject("winmgmts://" & strComputername & "/root/CIMV2")
   strOSData = "<operatingsystem>" & VbCrLf
   strCompData = "<computersystem>" & VbCrLf
   strNetworkData = "<network>" & VbCrLf
     Â
   ' strOSName is declared globally
   strMemoryData = "<memory>" & VbCrLf
   Set colOperatingSystem = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   For Each objItem in colOperatingSystem
      arrTemp = Split(objItem.Name, "|")
      strOSName = arrTemp(0)
      strOSData = strOSData & "<osname>" & strOSName & "</osname>" & VbCrLf
      strOSData = strOSData & "<csdversion>" & objItem.CSDVersion & "</csdversion>" & VbCrLf
      strOSData = strOSData & "<windir>" & objItem.WindowsDirectory & "</windir>" & VbCrLf
      strOSData = strOSData & "<locale>" & objItem.Locale & "</locale>" & VbCrLf
      strOSData = strOSData & "<buildnumber>" & objItem.BuildNumber & "</buildnumber>" & VbCrLf
      strOSData = strOSData & "<serialnumber>" & objItem.SerialNumber & "</serialnumber>" & VbCrLf
      strOSData = strOSData & "<pagefilesize>" & Round(objItem.SizeStoredIn
         "Gb</pagefilesize>" & VbCrLf
      strOSData = strOSData & "<lastboottime>" & WMIStringToDate(objItem.La
         "</lastboottime>" & VbCrLf
        Â
      strMemoryData = strMemoryData & "<freephysicalmemory>" &_
         Round(objItem.FreePhysical
      strMemoryData = strMemoryData & "<freevirtualmemory>" &_
         Round(objItem.FreeVirtualM
      strMemoryData = strMemoryData & "<totalvirtualmemory>" &_
         Round(objItem.TotalVirtual
   Next
   Set colOperatingSystem = Nothing
   strCompData = strCompData & "<systemtype>Server</syste
  Â
   Set colComputerSystem = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   For Each objItem in colComputerSystem
      Select Case objItem.DomainRole
         Case 0
            strCompDomainRole = "Standalone Workstation"
         Case 1
            strCompDomainRole = "Member Workstation"
         Case 2
            strCompDomainRole = "Standalone Server"
         Case 3
            strCompDomainRole = "Member Server"
         Case 4
            strCompDomainRole = "Backup Domain Controller"
         Case 5
            strCompDomainRole = "Primary Domain Controller"
      End Select
      strCompData = strCompData & "<domainrole>" & strCompDomainRole & "</domainrole>" & VbCrLf
      strCompData = strCompData & "<manufacturer>" & objItem.Manufacturer &_
         "</manufacturer>" & VbCrLf
      strCompData = strCompData & "<model>" & objItem.Model & "</model>" & VbCrLf
      strMemoryData = strMemoryData & "<physicalmemory>" & Round(objItem.TotalPhysica
         "Mb</physicalmemory>" & VbCrLf
      strCompData = strCompData & "<timezone>" & objItem.CurrentTimeZone & "</timezone>" & VbCrLf
   Next
   Set colComputerSystem = Nothing
   Set colBIOS = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   For Each objItem in colBIOS
      strCompData = strCompData & "<serialnumber>" & objItem.SerialNumber &_
         "</serialnumber>" & VbCrLf
   Next
   Set colBIOS = Nothing
   Set colShares = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strOSData = strOSData & "<shares>" & VbCrLf
   For Each objItem in colShares
      strOSData = strOSData & "<share>" & VbCrLf
      strOSData = strOSData & "<name>" & objItem.Name & "</name>" & VbCrLf
      strOSData = strOSData & "<caption>" & objItem.Caption & "</caption>" & VbCrLf
      strOSData = strOSData & "<path>" & objItem.Path & "</path>" & VbCrLf
      strOSData = strOSData & "</share>" & VbCrLf
   Next
   strOSData = strOSData & "</shares>" & VbCrLf
   Set colShares = Nothing
   Set colServices = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strOSData = strOSData & "<services>" & VbCrLf
   For Each objItem in colServices
      strOSData = strOSData & "<service>" & VbCrLf
      strOSData = strOSData & "<name>" & Replace(objItem.DisplayNam
      strOSData = strOSData & "<status>" & objItem.State & "</status>" & VbCrLf
      strOSData = strOSData & "</service>" & VbCrLf
   Next
   strOSData = strOSData & "</services>" & VbCrLf
   Set colServices = Nothing
  Â
   Set colPrinters = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strOSData = strOSData & "<printers>" & VbCrLf
   For Each objItem in colPrinters
      strOSData = strOSData & "<printer>" & VbCrLf
      strOSData = strOSData & "<name>" & objItem.Name & "</name>" & VbCrLf
      strOSData = strOSData & "<server>" & objItem.ServerName & "</server>" & VbCrLf
      strOSData = strOSData & "<share>" & objItem.ShareName & "</share>" & VbCrLf
      strOSData = strOSData & "<network>" & objItem.Network & "</network>" & VbCrLf
      strOSData = strOSData & "<port>" & objItem.PortName & "</port>" & VbCrLf
      strOSData = strOSData & "</printer>" & VbCrLf
   Next
   strOSData = strOSData & "</printers>" & VbCrLf
   Set colPrinters = Nothing
   Set colSoftware = objWMIDefault.ExecQuery("S
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strOSData = strOSData & "<installedsoftware>" & VbCrLf
   For Each objItem in colSoftware
      strOSData = strOSData & "<application>" & VbCrLf
      strDisplayName = Replace(objItem.DisplayNam
      strOSData = strOSData & "<name>" & strDisplayName & "</name>" & VbCrLf
      strOSData = strOSData & "<version>" & objItem.DisplayVersion & "</version>" & VbCrLf
      strOSData = strOSData & "<installdate>" & objItem.InstallDate & "</installdate>" & VbCrLf
      If Not IsNull(objItem.UninstallSt
         strPath = Replace(objItem.UninstallS
         strOSData = strOSData & "<path>" & strPath & "</path>" & VbCrLf
      End If
      strOSData = strOSData & "</application>" & VbCrLf
   Next
   strOSData = strOSData & "</installedsoftware>" & VbCrLf
   Set colSoftware = Nothing
   Set colPhysicalMemoryArray = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   For Each objItem in colPhysicalMemoryArray
      If objItem.Use = 3 Then
         strMemoryData = strMemoryData & "<systemmemorydevices>" & objItem.MemoryDevices &_
            "</systemmemorydevices>" & VbCrLf
      End If
   Next
   Set colPhysicalMemoryArray = Nothing
   Set colPhysicalMemory = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strMemoryData = strMemoryData & "<memorymodules>" & VbCrLf
   For Each objItem in colPhysicalMemory
      strMemoryData = strMemoryData & "<module>" & VbCrLf
      strMemoryData = strMemoryData & "<locator>" & objItem.DeviceLocator & "</locator>" & VbCrLf
      strMemoryData = strMemoryData & "<capacity>" &_
         Round(objItem.Capacity/(10
      strMemoryData = strMemoryData & "<speed>" & objItem.Speed & "MHz</speed>" & VbCrLf
      strMemoryData = strMemoryData & "</module>" & VbCrLf
   Next
  Â
   strMemoryData = strMemoryData & "</memorymodules>" & VbCrLf
   Set colPhysicalMemory = Nothing
   strMemoryData = strMemoryData & "</memory>" & VbCrLf
   strCompData = strCompData & strMemoryData
   Set colProcessor = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<processors>" & VbCrLf
   For Each objItem in colProcessor
      strCompData = strCompData & "<processor>" & VbCrLf
      strCompData = strCompData & "<name>" & objItem.Name & "</name>" & VbCrLf
      strCompData = strCompData & "<manufacturer>" & objItem.Manufacturer &_
         "</manufacturer>" & VbCrLf
      strCompData = strCompData & "<speed>" & objItem.MaxClockSpeed & "</speed>" & VbCrLf
      strCompData = strCompData & "</processor>" & VbCrLf
   Next
   strCompData = strCompData & "</processors>" & VbCrLf
   Set colProcessor = Nothing
   Set colBIOS = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<bios>" & VbCrLf
   For Each objItem in colBIOS
      strCompData = strCompData & "<version>" & objItem.Version & "</version>" & VbCrLf
      strCompData = strCompData & "<biosversion>" & Join(objItem.BIOSVersion, ",") &_
         "</biosversion>" & VbCrLf
      strCompData = strCompData & "<releasedate>" & WMIStringToDate(objItem.Re
         "</releasedate>" & VbCrLf
   Next
   strCompData = strCompData & "</bios>" & VbCrLf
   Set colBIOS = Nothing
   Set colDesktopMonitor = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<monitor>" & VbCrLf
   For Each objItem in colDesktopMonitor
      strCompData = strCompData & "<name>" & objItem.Name & "</name>" & VbCrLf
      strCompData = strCompData & "<manufacturer>" & objItem.MonitorManufacture
         "</manufacturer>" & VbCrLf
   Next
   strCompData = strCompData & "</monitor>" & VbCrLf
   Set colDesktopMonitor = Nothing
   Set colVideoController = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<videocontrollers>" & VbCrLf
   For Each objItem in colVideoController
      strCompData = strCompData & "<controller>" & VbCrLf
      strCompData = strCompData & "<description>" & objItem.Description & "</description>" & VbCrLf
      strCompData = strCompData & "<videomemory>" & Round((objItem.AdapterRAM/
         "Mb</videomemory>" & VbCrLf
      strCompData = strCompData & "<horizontalresolution>" & objItem.CurrentHorizontalR
         "</horizontalresolution>" & VbCrLf
      strCompData = strCompData & "<verticalresolution>" & objItem.CurrentVerticalRes
         "</verticalresolution>" & VbCrLf
      strCompData = strCompData & "<bitsperpixel>" & objItem.CurrentBitsPerPixe
      strCompData = strCompData & "<refreshrate>" & objItem.CurrentRefreshRate
      strCompData = strCompData & "</controller>"
   Next
   strCompData = strCompData & "</videocontrollers>" & VbCrLf
   Set colVideoController = Nothing
  Â
   Set colSoundDevice = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<sounddevice>" & VbCrLf
   For Each objItem in colSoundDevice
      If Not IsNull(objItem.Description
         strCompData = strCompData & "<description>" & objItem.Description & "</description>" & VbCrLf
      End If
   Next
   strCompData = strCompData & "</sounddevice>" & VbCrLf
   Set colSoundDevice = Nothing
   Set colFloppyDrive = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<floppydrive>" & VbCrLf
   For Each objItem in colFloppyDrive
      If Not IsNull(objItem.Availabilit
         strCompData = strCompData & "<description>" & objItem.Description & "</description>" & VbCrLf
         strCompData = strCompData & "<caption>" & objItem.Caption & "</caption>" & VbCrLf
         If objItem.Availability = 3 Then
            strCompData = strCompData & "<availability>Online</ava
         Else
            strCompData = strCompData & "<availability>Offline</av
         End If
      End If
   Next
   strCompData = strCompData & "</floppydrive>" & VbCrLf
   Set colFloppyDrive = Nothing
   Set colSerialPort = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<modem>" & VbCrLf
   For Each objItem in colSerialPort
      If InStr(1, objItem.Caption, "modem", VbTextCompare) > 0 Then
         strCompData = strCompData & "<description>" & objItem.Description & "</description>" & VbCrLf
      End If
   Next
   strCompData = strCompData & "</modem>" & VbCrLf
   Set colSerialPort = Nothing
   Set colLogicalDisk = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strCompData = strCompData & "<logicaldisk>" & VbCrLf
   For Each objItem in colLogicalDisk
      If objItem.DriveType = 3 Then
         strCompData = strCompData & "<disk>" & VbCrLf
         strCompData = strCompData & "<name>" & objItem.Name & "</name>" & VbCrLf
         strCompData = strCompData & "<size>" & Round(objItem.Size/(1024^3
         strCompData = strCompData & "<freespace>" & Round(objItem.FreeSpace/(1
         strCompData = strCompData & "<volumename>" & objItem.VolumeName & "</volumename>" & VbCrLf
         strCompData = strCompData & "</disk>" & VbCrLf
      End If
   Next
   strCompData = strCompData & "</logicaldisk>" & VbCrLf
   Set colLogicalDisk = Nothing
   strNetworkData = strNetworkData & "<dnsquery>" & VbCrLf
   arrTemp = GetDNSAddresses(strCompute
   For Each strAddress in arrTemp
      strNetworkData = strNetworkData & "<ipaddress>" & strAddress & "</ipaddress>" & VbCrLf
   Next
   strNetworkData = strNetworkData & "</dnsquery>" & VbCrLf
  Â
   Set colNetwork = objWMICimV2.ExecQuery("SEL
         "WQL", WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
   strNetworkData = strNetworkData & "<networkadapters>" & VbCrLf
   For Each objItem in colNetwork
      If Not IsNUll(objItem.IPAddress) And objItem.IPEnabled = True Then
         booListAdapter = False
         For Each strIPAddress in objItem.IPAddress
            If strIPAddress <> "0.0.0.0" and strIPAddress <> "" Then
               booListAdapter = True
               strIPData = strIPData & "<ipaddress>" & strIPAddress &_
                  "</ipaddress>" & VbCrLf
               If strIPAddress = arrTemp(0) Then
                  strSubnet = Join(objItem.IPSubnet)
               End If
            End If
         Next
  Â
         If booListAdapter = True Then
            strNetworkData = strNetworkData & "<adapter>" & VbCrLf
            strNetworkData = strNetworkData & "<description>" & objItem.Description &_
               "</description>" & VbCrLf
            strNetworkData = strNetworkData & "<ipaddresses>" & VbCrLf
            strNetworkData = strNetworkData & strIPData & VbCrLf
            strNetworkData = strNetworkData & "</ipaddresses>" & VbCrLf
            strNetworkData = strNetworkData & "<macaddress>" & objItem.MACAddress &_
               "</macaddress>" & VbCrLf
            strNetworkData = strNetworkData & "<dnsservers>" & Join(objItem.DNSServerSear
               "</dnsservers>" & VbCrLf
            strNetworkData = strNetworkData & "</adapter>" & VbCrLf
         End If
      End If
   Next
   strNetworkData = strNetworkData & "</networkadapters>" & VbCrLf
   Set colNetwork = Nothing
   intSubnet = UBound(Split(ConvertIPToBi
   If objConfiguredSubnets.Exist
      strNetworkData = strNetworkData & "<site>" &_
         objConfiguredSubnets(GetNe
   ElseIf objConfiguredSubnets.Exist
      strNetworkData = strNetworkData & "<site>" &_
         objConfiguredSubnets(GetNe
   Else
      strNetworkData = strNetworkData & "<site></site>" & VbCrLf
   End If
   On Error Goto 0
   strCompData = strCompData & "</computersystem>" & VbCrLf
   strOSData = strOSData & "</operatingsystem>" & VbCrLf
   strNetworkData = strNetworkData & "</network>" & VbCrLf
   objFile.WriteLine strOSData
   objFile.WriteLine strCompData
   objFile.WriteLine strNetworkData
   Set objWMICimV2 = Nothing
End Sub
Function GetDNSAddresses(strCompute
   Dim objShell, objScriptExec, objStdOut
   Dim strIPAddress, strOut
   Dim arrIPAddresses
   Set objShell = CreateObject("WScript.Shel
   Set objScriptExec = objShell.Exec("nslookup " & strComputerName)
   Set objStdOut = objScriptExec.StdOut
  Â
   strIPAddress = ""
   Do Until objStdOut.AtEndOfStream
      strOut = objStdOut.ReadLine
      If InStr(strOut, "Name:") Then
         strIPAddress = objStdOut.ReadLine
  Â
         If InStr(strIPAddress, "Address:") > 0 Then
            strIPAddress = Trim(Replace(strIPAddress,
         ElseIf InStr(strIPAddress, "Addresses:") > 0 Then
            strIPAddress = Trim(Replace(strIPAddress,
         End If
      End If
   Loop
  Â
   GetDNSAddresses = Split(strIPAddress, ", ")
  Â
   Set objStdOut = Nothing
   Set objScriptExec = Nothing
   Set objShell = Nothing
End Function
'
' Main Code
'
Dim objFileSystem, objConfiguredSubnets, objWMIService
Dim strDN, strDomainName
Dim arrDomainDNs
Set objConfiguredSubnets = CreateObject("Scripting.Di
GetConfiguredSubnets
Set objFileSystem = CreateObject("Scripting.Fi
arrDomainDNs = GetForestContexts
For Each strDN in arrDomainDNs
  Â
   strDomainName = Replace(strDN, ",DC=", ".")
   strDomainName = Replace(strDomainName, "DC=", "")
  Â
   FindComputers strDomainName & "/" & strDN
Next
Set objFileSystem = Nothing
Can i know what this script is and what it does.
Regards
Sharath
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.