home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / WindowsServerTrial / server.iso / sources / install.wim / 1 / Windows / System32 / gatherWiredInfo.vbs < prev    next >
Text File  |  2008-01-05  |  12KB  |  348 lines

  1. Dim FSO, shell, xslProcessor
  2.  
  3.  
  4.  
  5. Sub GetOSInfo(outputFileName)
  6.     On Error Resume Next
  7.  
  8.     strComputer = "."
  9.     HKEY_LOCAL_MACHINE = &H80000002
  10.  
  11.     Dim objReg, outputFile
  12.     Dim buildDetailNames, buildDetailRegValNames
  13.  
  14.     buildDetailNames = Array("Product Name", "Version", "Build Lab", "Type")
  15.     buildDetailRegValNames = Array("ProductName", "CurrentVersion", "BuildLabEx", "CurrentType")
  16.  
  17.     Set outputFile = FSO.OpenTextFile(outputFileName, 2, True)
  18.  
  19.     Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
  20.                      strComputer & "\root\default:StdRegProv")
  21.  
  22.     outputFile.WriteLine("[Architechture/Processor Information]")
  23.     outputFile.WriteLine()
  24.     outputFile.Close
  25.     cmd = "cmd /c set processor >> " & outputFileName
  26.     shell.Run cmd, 0, True
  27.  
  28.     Set outputFile = FSO.OpenTextFile(outputFileName, 8, True)
  29.     
  30.     outputFile.WriteLine()
  31.     outputFile.WriteLine("[Operating System Information]")
  32.     outputFile.WriteLine()
  33.  
  34.     strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
  35.     for I = 0 to UBound(buildDetailNames)
  36.         objReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, buildDetailRegValNames(I), info
  37.         outputFile.WriteLine(buildDetailNames(I) + " = " + info)
  38.     Next
  39.  
  40.     outputFile.WriteLine()
  41.     strKeyPath = "SYSTEM\SETUP"
  42.     objReg.GetDWordValue HKEY_LOCAL_MACHINE, strKeyPath, "Upgrade", upgradeInfo
  43.     if IsNull(upgradeInfo) Then
  44.         outputFile.WriteLine("This is a clean installed system")
  45.     Else
  46.         outputFile.WriteLine("This is an upgraded system")
  47.     End If
  48.     
  49.     outputFile.WriteLine(buildDetailNames(I) + " = " + info)
  50.  
  51.     outputFile.WriteLine()
  52.     outputFile.WriteLine("[File versions]")
  53.     outputFile.WriteLine()
  54.  
  55.     Set shell = WScript.CreateObject( "WScript.Shell" )
  56.     windir = shell.ExpandEnvironmentStrings("%windir%\system32\")
  57.  
  58.     Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
  59.  
  60.     Dim FileSet
  61.     FileSet = Array("onex.dll", "dot3api.dll", "dot3cfg.dll", "dot3dlg.dll", "dot3gpclnt.dll", "dot3gpui.dll", "dot3msm.dll", "dot3svc.dll", "dot3ui.dll")
  62.     For Each file in FileSet
  63.         filename = windir + file
  64.         strQuery = "Select * from CIM_Datafile Where Name = '" + Replace(filename, "\", "\\") + "'"
  65.         Set fileProp = objWMIService.ExecQuery _
  66.             (strQuery)
  67.  
  68.         For Each objFile in fileProp
  69.             outputFile.WriteLine(file + "    " + objFile.Version)
  70.         Next
  71.     Next
  72.  
  73.     call GetBatteryInfo(outputFile)
  74.     outputFile.Close
  75.  
  76.     Set outputFile = FSO.OpenTextFile(outputFileName, 8, True)
  77.     outputFile.WriteLine("")
  78.     outputFile.WriteLine("[System Information]")
  79.     outputFile.WriteLine("")
  80.     outputFile.Close
  81.  
  82.     'Comments: Dumping System Information using "systeminfo" command
  83.  
  84.     cmd = "cmd /c systeminfo >> " & outputFileName
  85.     shell.Run cmd, 0, True
  86.  
  87.     Set outputFile = FSO.OpenTextFile(outputFileName, 8, True)
  88.     outputFile.WriteLine("")
  89.     outputFile.WriteLine("[User Information]")
  90.     outputFile.WriteLine("")
  91.     outputFile.Close
  92.  
  93.     cmd = "cmd /c set u >> " & outputFileName
  94.     shell.Run cmd, 0, True
  95.  
  96. End Sub
  97.  
  98. Sub GetBatteryInfo(outputFile)
  99.     On Error Resume Next
  100.     strComputer = "."
  101.     outputFile.WriteLine()
  102.     outputFile.WriteLine("[Power Information]")
  103.     outputFile.WriteLine()
  104.     Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
  105.     Set colItems = objWMIService.ExecQuery("Select * from Win32_Battery")
  106.     if colItems.Count = 0 Then
  107.     outputFile.WriteLine("It is a Desktop running on AC")
  108.     Else
  109.     For Each objItem in colItems
  110.         if objItem.Availability = 2 Then
  111.         outputFile.WriteLine("Machine is running on AC Adapter")
  112.         Else
  113.         if objitem.Availability = 3 Then
  114.         outputFile.WriteLine("Machine is running on Battery")
  115.         End If
  116.         End If
  117.     Next
  118.     End If
  119. End Sub
  120.  
  121. Sub GetAdapterInfo(outputFile)
  122.     On Error Resume Next
  123.     Dim adapters, objReg
  124.     Dim adapterDetailNames, adapterDetailRegValNames
  125.  
  126.     adapterDetailNames = Array("Driver Description", "Adapter Guid", "Hardware ID", "Driver Date", "Driver Version", "Driver Provider")
  127.     adapterDetailRegValNames = Array("DriverDesc", "NetCfgInstanceId", "MatchingDeviceId", "DriverDate", "DriverVersion", "ProviderName")
  128.  
  129.  
  130.     HKEY_LOCAL_MACHINE = &H80000002
  131.     strComputer = "."
  132.  
  133.     Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
  134.                      strComputer & "\root\default:StdRegProv")
  135.  
  136.  
  137.     strKeyPath = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\"
  138.  
  139.     objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, adapterSet
  140.  
  141.     For Each adapter In adapterSet
  142.         If StrComp("Properties", adapter) Then
  143.             fullstrKeyPath = strKeyPath + adapter
  144.             objReg.GetDWORDValue HKEY_LOCAL_MACHINE, fullstrKeyPath, "*IfType", ifType
  145.             If ifType = 6 Then
  146.                 for I = 0 to UBound(adapterDetailNames)
  147.                     objReg.GetStringValue HKEY_LOCAL_MACHINE, fullstrKeyPath, adapterDetailRegValNames(I), info
  148.                     outputFile.WriteLine(adapterDetailNames(I) + " = " + info)
  149.                 Next
  150.                 outputFile.WriteLine()
  151.             End If
  152.         End If
  153.     Next
  154. End Sub
  155.  
  156.  
  157.  
  158. Sub GetEnvironmentInfo(outputFileName)
  159.     On Error Resume Next
  160.     Dim envInfoFile 
  161.  
  162.     Set objShell = WScript.CreateObject( "WScript.Shell" )
  163.     
  164.     cmd = "cmd /c netsh lan show interfaces > " & outputFileName
  165.     objShell.Run cmd, 0, True
  166.  
  167.     cmd = "cmd /c netsh lan show settings >> " & outputFileName
  168.     objShell.Run cmd, 0, True
  169.  
  170.     cmd = "cmd /c netsh lan show profiles >> " & outputFileName
  171.     objShell.Run cmd, 0, True
  172.  
  173.     cmd = "cmd /c ipconfig /all >> " & outputFileName
  174.     objShell.Run cmd, 0, True
  175.  
  176.     Set envInfoFile = FSO.OpenTextFile(outputFileName, 8, True)
  177.     envInfoFile.WriteLine("")
  178.     envInfoFile.WriteLine("Machine certificates...")
  179.     envInfoFile.WriteLine("")
  180.     envInfoFile.Close
  181.  
  182.     cmd = "cmd /c certutil -v -store -silent My >> " & outputFileName
  183.     objShell.Run cmd, 0, True
  184.  
  185.     Set envInfoFile = FSO.OpenTextFile(outputFileName, 8, True)
  186.     envInfoFile.WriteLine("")
  187.     envInfoFile.WriteLine("User certificates...")
  188.     envInfoFile.WriteLine("")
  189.     envInfoFile.Close
  190.  
  191.     cmd = "cmd /c certutil -v -store -silent -user My >> " & outputFileName
  192.     objShell.Run cmd, 0, True
  193. End Sub
  194.  
  195. 'Comments: Function to dump a tree under a registry path into a file 
  196. Sub DumpRegKey(outputFileName,regpath)
  197.     On Error Resume Next
  198.     Dim cmd
  199.  
  200.     Set objShell = WScript.CreateObject( "WScript.Shell" )
  201.     
  202.     cmd = "cmd /c reg export " & regpath & "  " & outputFileName & " /y"
  203.     objShell.Run cmd, 0, True
  204.  
  205. End Sub
  206.  
  207. Sub DumpAllKeys
  208.     On Error Resume Next
  209.     Dim NotifRegFile, RegFolder, Key
  210.  
  211.     RegFolder = "Reg"
  212.  
  213.     if Not FSO.FolderExists(RegFolder) Then
  214.        FSO.CreateFolder RegFolder
  215.     End If
  216.  
  217.     LMDot3SvcRegFile = RegFolder + "\HKLMDot3Svc.reg.txt"
  218.     CUDot3SvcRegFile = RegFolder + "\HKCUDot3Svc.reg.txt"
  219.     LGPPolicyFile  = RegFolder + "\L2GP.reg.txt"
  220.         
  221.     call DumpRegKey(LMDot3SvcRegFile ,"""HKLM\SOFTWARE\Microsoft\dot3svc""")
  222.     call DumpRegKey(CUDot3SvcRegFile ,"""HKCU\SOFTWARE\Microsoft\dot3svc""")
  223.     call DumpRegKey(LGPPolicyFile  ,"""HKLM\SOFTWARE\Policies\Microsoft\Windows\WiredL2\GP_Policy""")
  224. End Sub
  225.  
  226. Sub FormatTrace(basename, tmfPath, omitLevels) 
  227.     On  Error Resume Next
  228.  
  229.     Dim subdir
  230.     subdir = "traces\"
  231.     Dim cmd
  232.     cmd = "tracerpt """ & subdir & basename & ".etl"" -o """ & subdir & basename & ".xml"" -summary """ & subdir & basename & ".sum"" -tmf """ & tmfPath & """ -y"
  233.  
  234.     Dim exitcode
  235.     exitcode = shell.Run(cmd, 0, True)  ' run synchronous and hide the window
  236.     If exitcode <> 0 Then
  237.         Err.Raise exitcode, "gatherWiredInfo.FormatTrace", "tracerpt failed"
  238.     End If
  239.  
  240.     FSO.DeleteFile subdir & basename & ".sum"
  241.  
  242.     Const ForReading = 1
  243.     Const TristateFalse = 0
  244.     Dim ansiFile
  245.     Set ansiFile = FSO.OpenTextFile(subdir & basename & ".xml", ForReading, False, TristateFalse)
  246.  
  247.     xslProcessor.Input = CreateObject("MSXML2.DOMDocument.6.0")
  248.     xslProcessor.Input.Async = False
  249.     xslProcessor.Input.ValidateOnParse = True
  250.     If Not xslProcessor.Input.LoadXml(ansiFile.ReadAll()) Then
  251.         Err.Raise xslProcessor.Input.ParseError.ErrorCode, "gatherWiredInfo.FormatTrace", basename & ".xml line " & xslProcessor.Input.ParseError.Line & " column " & xslProcessor.Input.ParseError.LinePos & ": " & xslProcessor.Input.ParseError.Reason
  252.     End If
  253.  
  254.     Dim output
  255.     Set output = FSO.CreateTextFile(subdir & basename & ".txt", True, True)
  256.  
  257.     xslProcessor.AddParameter "omit-levels", " " & omitLevels & " "
  258.     xslProcessor.Reset
  259.     xslProcessor.Transform
  260.  
  261.     Dim buf
  262.     Do
  263.         ' FSO text file doesn't implement IStream, have to flush internal buffer manually
  264.         buf = xslProcessor.Output
  265.         output.Write buf
  266.     Loop While buf <> ""
  267.  
  268.     ansiFile.Close
  269.     FSO.DeleteFile subdir & basename & ".xml"
  270. End Sub
  271.  
  272. Sub FormatEventLog(basename)
  273.     On Error Resume Next    
  274.     Dim subdir
  275.     subdir = "eventlog\"
  276.     if Not FSO.FolderExists(subdir) Then
  277.         FSO.CreateFolder subdir
  278.     End If
  279.     
  280.     Dim cmd
  281.  
  282.     Set objShell = WScript.CreateObject( "WScript.Shell" )
  283.     
  284.     cmd = "cmd /c tracerpt -y -of EVTX " + basename + ".etl -o " + subdir + basename + ".evtx"
  285.     objShell.Run cmd, 0, True
  286.  
  287. End Sub
  288.  
  289.  
  290. On Error Resume Next
  291.  
  292. Dim adapterInfoFile, netInfoFile 
  293.  
  294. Set FSO = CreateObject("Scripting.FileSystemObject")
  295.  
  296. Set shell = WScript.CreateObject( "WScript.Shell" )
  297. sysdrive = shell.ExpandEnvironmentStrings("%SystemDrive%\")
  298.  
  299. configFolder = "config"
  300. osinfoFileName = configFolder + "\osinfo.txt"
  301. adapterinfoFileName = configFolder + "\adapterinfo.txt"
  302. envinfoFileName = configFolder + "\envinfo.txt"
  303.  
  304. if Not FSO.FolderExists(configFolder) Then
  305.     FSO.CreateFolder configFolder
  306. End If
  307.  
  308. call DumpAllKeys
  309.  
  310. call GetOSInfo(osinfoFileName)
  311.  
  312. Set adapterInfoFile = FSO.OpenTextFile(adapterInfoFileName, 2, True)
  313.  
  314. call GetAdapterInfo(adapterInfoFile)
  315.  
  316. adapterInfoFile.Close
  317.  
  318. call GetEnvironmentInfo(envinfoFileName)
  319.  
  320. Set stylesheet = CreateObject("MSXML2.FreeThreadedDOMDocument.6.0")
  321. stylesheet.Async = False
  322. stylesheet.ValidateOnParse = True
  323. If Not stylesheet.Load(shell.ExpandEnvironmentStrings("%windir%\system32\gatherWiredInfo.xslt")) Then
  324.     Err.Raise stylesheet.ParseError.ErrorCode, "gatherWiredInfo", "gatherWiredInfo.xml line " & stylesheet.ParseError.Line & " column " & stylesheet.ParseError.LinePos & ": " & stylesheet.ParseError.Reason
  325. End If
  326. Set template = CreateObject("MSXML2.XSLTemplate.6.0")
  327. template.Stylesheet = stylesheet
  328. Set xslProcessor = template.CreateProcessor
  329.  
  330. onex_tmf  = shell.ExpandEnvironmentStrings("%windir%\system32\onex.tmf")
  331. onex_omit = "ONEX_DEV_REFCOUNTS ONEX_DEV_TRACK UTILS_LIB_TRACK UTILS_LIB_INFO WLAN_UTL_DEV_INFO WLAN_UTL_DEV_TRACK WLAN_UTL_DEV_ERROR WLAN_UTL_DEV_MEMORY Noise Perf Trace"
  332. dot3_tmf  = shell.ExpandEnvironmentStrings("%windir%\system32\dot3.tmf")
  333. dot3_omit = "ACDLG_DEV_TRACK DEVICE_LAYER_TRACK DOT3_LOG_LEVEL_TRACE DOT3_MSM_REFCOUNTS DOT3_MSM_TRACK UTILS_LIB_TRACK UTILS_LIB_INFO Noise Perf Trace"
  334. eaphost_tmf  = shell.ExpandEnvironmentStrings("%windir%\system32\eaphost.tmf")
  335. eaphost_omit = "ONEX_DEV_REFCOUNTS ONEX_DEV_TRACK UTILS_LIB_TRACK UTILS_LIB_INFO WLAN_UTL_DEV_INFO WLAN_UTL_DEV_TRACK WLAN_UTL_DEV_ERROR WLAN_UTL_DEV_MEMORY Noise Perf Trace"
  336. l2nacp_omit = "L2NACP_LOG_LEVEL_TRACE"
  337.  
  338. FormatTrace "onex",    onex_tmf, onex_omit
  339. FormatTrace "dot3dlg", dot3_tmf, dot3_omit
  340. FormatTrace "dot3gp",  dot3_tmf, dot3_omit
  341. FormatTrace "dot3msm", dot3_tmf, dot3_omit
  342. FormatTrace "dot3svc", dot3_tmf, dot3_omit
  343. FormatTrace "dot3gp", dot3_tmf, dot3_omit
  344. FormatTrace "eaphost",    eaphost_tmf, eaphost_omit
  345. FormatTrace "l2nacp", onex_tmf, l2nacp_omit
  346.  
  347. FormatEventLog "WiredAutocfgEventLog"
  348.