请帮我添加到这个脚本来获取服务器硬件信息

(如果这应该是在stackoverflow只是告诉我…但这似乎更适合在这里)

我从这个网站在线下面find了这个脚本: http : //forums.webhostautomation.com/showthread.php?t=8667

有人可以帮助添加(如果可能)以下查询以及:

****电源供应***

****操作系统和服务包级别***

****网卡的数量和网卡types(千兆等)***

我不是很擅长编写脚本,一旦我开始添加这些function,我最终打破了脚本。

先谢谢你!

'***************************************************** ' Script Witten by Larry Heintz ' Jan 2005 www.larryheintz.com ' This script will connect to the computer name you ' enter and query and return the following information ' ' CPU: ' - CPU Speed MHZ ' - CPU Manufacture ' - CPU Type ' - CPU Current Load ' ' Memory ' - Memory Bank ' - Memory Stick Size MB ' - Memory Speed MHZ ' - Memory Type ' ' Hard Drive ' - HD Model ' - HD Size GB ' - HD # of Partions ' - HD Type ' - Drive Letter ' - Used Space ' - Free Space ' - Size of Partion ' - Free Space % ' ' Script Usage: ' cscript hardware.vbs /computer:[Computer Name] '***************************************************** On Error Resume Next ' Dims stuff Dim objStdOut, args Dim servername ' Set Stuff Set objStdOut = WScript.stdOut Set args = WScript.Arguments.Named servername = Trim(args.Item("computer")) If WScript.arguments.count = 1 Then WScript.echo "CPU,Memory,Hard Drive Information for " & UCase(servername) WScript.echo "" If Not (errorChecking(servername)) Then '// CPU Info WScript.echo "CPU Information:" WScript.echo "================" For Each objCPU In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_Processor") Select Case objCPU.Family Case 2 cputype = "Unknown" Case 11 cputype = "Pentium brand" Case 12 cputype = "Pentium Pro" Case 13 cputype = "Pentium II" Case 14 cputype = "Pentium processor with MMX technology" Case 15 cputype = "Celeron " Case 16 cputype = "Pentium II Xeon" Case 17 cputype = "Pentium III" Case 28 cputype = "AMD Athlon Processor Family" Case 29 cputype = "AMD Duron Processor" Case 30 cputype = "AMD2900 Family" Case 31 cputype = "K6-2+" Case 130 cputype = "Itanium Processor" Case 176 cputype = "Pentium III Xeon" Case 177 cputype = "Pentium III Processor with Intel SpeedStep Technology" Case 178 cputype = "Pentium 4" Case 179 cputype = "Intel Xeon" Case 181 cputype = "Intel Xeon processor MP" Case 182 cputype = "AMD AthlonXP Family" Case 183 cputype = "AMD AthlonMP Family" Case 184 cputype = "Intel Itanium 2" Case 185 cputype = "AMD Opteron Family" End Select WScript.echo " CPU MHZ: " & objCPU.CurrentClockSpeed WScript.echo " CPU Manufacture: " & objCPU.Manufacturer WScript.echo " CPU Type: " & cputype WScript.echo " CPU Current Load: " & objCPU.LoadPercentage & "%" Next WScript.echo "" Set objCPU = Nothing '// Memory Info WScript.echo "Memory Information:" WScript.echo "===================" For Each objMem In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_PhysicalMemory") Select Case objMem.MemoryType Case 0 rtype = "Unknown" Case 1 rtype = "Other" Case 2 rtype = "DRAM" Case 3 rtype = "Synchronous DRAM" Case 4 rtype = "Cache DRAM" Case 5 rtype = "EDO" Case 6 rtype = "EDRAM" Case 7 rtype = "VRAM" Case 8 rtype = "SRAM" Case 9 rtype = "RAM" Case 10 rtype = "ROM" Case 11 rtype = "Flash" Case 12 rtype = "EEPROM" Case 13 rtype = "FEPROM" Case 14 rtype = "EPROM" Case 15 rtype = "CDRAM" Case 16 rtype = "3DRAM" Case 17 rtype = "SDRAM" Case 18 rtype = "SGRAM" Case 19 rtype = "RDRAM" Case 20 rtype = "DDR" End Select WScript.echo " Memory Bank: " & objMem.BankLabel WScript.echo " Memory Size: " & objMem.Capacity / 1024 / 1024 & " MB" WScript.echo " Memory Speed: " & objMem.Speed & " MHZ" WScript.echo " Memory Type: " & rtype WScript.echo "" Next WScript.echo "" Set objMem = Nothing '// Hard Drive Info WScript.echo "Hard Drive Information:" WScript.echo "=======================" For Each objHDInfo In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_DiskDrive") WScript.echo " Hard Drive Model: " & objHDInfo.Model WScript.echo " Hard Drive Size: " & CLng(objHDInfo.Size / 1024 / 1024 / 1024) & " GB" WScript.echo " # of Partitions: " & objHDInfo.Partitions WScript.echo " Hard Drive Type: " & objHDInfo.InterfaceType WScript.echo "" Next WScript.echo "" Set objHDinfo = Nothing For Each objDisk In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_LogicalDisk Where DriveType = '3'") freespace = Left(objDisk.freespace / 1024 / 1024 / 1024, 4) totalspace = Left(objDisk.size / 1024 / 1024 / 1024, 4) usedspace = Left(totalspace / freespace, 4) freeperct = Left(100 / usedspace, 2) WScript.echo " Drive: " & objDisk.deviceid WScript.echo " Used Space: " & usedspace & " GB" WScript.echo " Free Space: " & freespace & " GB" WScript.echo " Total Space: " & totalspace & " GB" WScript.echo " Free: " & freeperct & "%" WScript.echo "" Next Set objDisk = Nothing End If WScript.echo "------------------------------------------------" Else objStdOut.Write "Usage: cscript hardware.vbs /computer:[Computer Name]" objStdOut.close WScript.quit End If ' Error Checking Function Function errorChecking(ComputerName) errorChecking = False If err.number <> 0 Then If err.number = "462" Then WScript.echo ComputerName & ",Error,Unable to connect" err.Clear() errorChecking = True ElseIf err.number = "70" Then 'General access denied error WScript.echo ComputerName & ",Error,Permission Denied while trying to connect." err.Clear() errorChecking = True ElseIf err.number = "451" Then 'HEX Error is: 1C3 err.Clear() errorChecking = True ElseIf err.number = "-2147023174" Then 'The RPC server is unavailable. WScript.echo ComputerName & ",Error,Unable to connect error number -2147023174." err.Clear() errorChecking = True ElseIf err.number = "-2147023836" Then WScript.echo ComputerName & ",Error,Unable to connect error number --2147023836." err.Clear() errorChecking = True ElseIf err.number = "-2147022986" Then WScript.echo ComputerName & ",Error,Unable to connect error number -2147022986." err.Clear() errorChecking = True Else WScript.echo "Error is: " & err.number WScript.echo "HEX Error is: " & Hex(err.number) WScript.echo "Desc. is: " & err.Description WScript.echo "Source is: " & err.Source err.Clear() End If End If End Function 

去这个吧 新的信息添加在脚本的底部。 一个告诫,NIC(ndis)链接速度是由其他NIC属性提供不同的提供者。 因此,NIC信息有两个新的部分:NIC实例信息和NIC链接信息。 每个枚举您的机器中的所有网卡,并提供相关的信息。

 '***************************************************** ' Script Witten by Larry Heintz ' Jan 2005 www.larryheintz.com ' Modified Sep 2009 by Shawn Quillman for use on ServerFault.com ' This script will connect to the computer name you ' enter and query and return the following information ' ' CPU: ' - CPU Speed MHZ ' - CPU Manufacture ' - CPU Type ' - CPU Current Load ' ' Memory ' - Memory Bank ' - Memory Stick Size MB ' - Memory Speed MHZ ' - Memory Type ' ' Hard Drive ' - HD Model ' - HD Size GB ' - HD # of Partions ' - HD Type ' - Drive Letter ' - Used Space ' - Free Space ' - Size of Partion ' - Free Space % ' ' Script Usage: ' cscript hardware.vbs /computer:[Computer Name] '***************************************************** On Error Resume Next ' Dims stuff Dim objStdOut, args Dim servername ' Set Stuff Set objStdOut = WScript.stdOut Set args = WScript.Arguments.Named servername = Trim(args.Item("computer")) If WScript.arguments.count = 1 Then WScript.echo "CPU,Memory,Hard Drive Information for " & UCase(servername) WScript.echo "" If Not (errorChecking(servername)) Then '// CPU Info WScript.echo "CPU Information:" WScript.echo "================" For Each objCPU In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_Processor") Select Case objCPU.Family Case 2 cputype = "Unknown" Case 11 cputype = "Pentium brand" Case 12 cputype = "Pentium Pro" Case 13 cputype = "Pentium II" Case 14 cputype = "Pentium processor with MMX technology" Case 15 cputype = "Celeron " Case 16 cputype = "Pentium II Xeon" Case 17 cputype = "Pentium III" Case 28 cputype = "AMD Athlon Processor Family" Case 29 cputype = "AMD Duron Processor" Case 30 cputype = "AMD2900 Family" Case 31 cputype = "K6-2+" Case 130 cputype = "Itanium Processor" Case 176 cputype = "Pentium III Xeon" Case 177 cputype = "Pentium III Processor with Intel SpeedStep Technology" Case 178 cputype = "Pentium 4" Case 179 cputype = "Intel Xeon" Case 181 cputype = "Intel Xeon processor MP" Case 182 cputype = "AMD AthlonXP Family" Case 183 cputype = "AMD AthlonMP Family" Case 184 cputype = "Intel Itanium 2" Case 185 cputype = "AMD Opteron? Family" End Select WScript.echo " CPU MHZ: " & objCPU.CurrentClockSpeed WScript.echo " CPU Manufacture: " & objCPU.Manufacturer WScript.echo " CPU Type: " & cputype WScript.echo " CPU Current Load: " & objCPU.LoadPercentage & "%" Next WScript.echo "" Set objCPU = Nothing '// Memory Info WScript.echo "Memory Information:" WScript.echo "===================" For Each objMem In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_PhysicalMemory") Select Case objMem.MemoryType Case 0 rtype = "Unknown" Case 1 rtype = "Other" Case 2 rtype = "DRAM" Case 3 rtype = "Synchronous DRAM" Case 4 rtype = "Cache DRAM" Case 5 rtype = "EDO" Case 6 rtype = "EDRAM" Case 7 rtype = "VRAM" Case 8 rtype = "SRAM" Case 9 rtype = "RAM" Case 10 rtype = "ROM" Case 11 rtype = "Flash" Case 12 rtype = "EEPROM" Case 13 rtype = "FEPROM" Case 14 rtype = "EPROM" Case 15 rtype = "CDRAM" Case 16 rtype = "3DRAM" Case 17 rtype = "SDRAM" Case 18 rtype = "SGRAM" Case 19 rtype = "RDRAM" Case 20 rtype = "DDR" End Select WScript.echo " Memory Bank: " & objMem.BankLabel WScript.echo " Memory Size: " & objMem.Capacity / 1024 / 1024 & " MB" WScript.echo " Memory Speed: " & objMem.Speed & " MHZ" WScript.echo " Memory Type: " & rtype WScript.echo "" Next WScript.echo "" Set objMem = Nothing '// Hard Drive Info WScript.echo "Hard Drive Information:" WScript.echo "=======================" For Each objHDInfo In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_DiskDrive") WScript.echo " Hard Drive Model: " & objHDInfo.Model WScript.echo " Hard Drive Size: " & CLng(objHDInfo.Size / 1024 / 1024 / 1024) & " GB" WScript.echo " # of Partitions: " & objHDInfo.Partitions WScript.echo " Hard Drive Type: " & objHDInfo.InterfaceType WScript.echo "" Next WScript.echo "" Set objHDinfo = Nothing For Each objDisk In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_LogicalDisk Where DriveType = '3'") freespace = Left(objDisk.freespace / 1024 / 1024 / 1024, 4) totalspace = Left(objDisk.size / 1024 / 1024 / 1024, 4) usedspace = Left(totalspace / freespace, 4) freeperct = Left(100 / usedspace, 2) WScript.echo " Drive: " & objDisk.deviceid WScript.echo " Used Space: " & usedspace & " GB" WScript.echo " Free Space: " & freespace & " GB" WScript.echo " Total Space: " & totalspace & " GB" WScript.echo " Free: " & freeperct & "%" WScript.echo "" Next Set objDisk = Nothing '// Operating System and Service Pack WScript.echo "Operating System Information:" WScript.echo "=======================" For Each objOSInfo In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_OperatingSystem") WScript.echo " Operating System: " & left(objOSInfo.Name,instr(objOSInfo.Name,"|")-1) WScript.echo " Service Pack Major Version: " & objOSInfo.ServicePackMajorVersion WScript.echo " Service Pack Minor Version: " & objOSInfo.ServicePackMinorVersion WScript.echo "" Next WScript.echo "" Set objOSinfo = Nothing '// NIC Info WScript.echo "NIC Instance Information:" WScript.echo "=======================" For Each objNICInfo In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_NetworkAdapterConfiguration") WScript.echo " Caption (Name of NIC): " & objNICInfo.Caption WScript.echo " MAC Address: " & objNICInfo.MACAddress WScript.echo " IP Address(es): " & Join(objNICInfo.IPAddress,", ") set objWMI = GetObject("winmgmts:\\" & servername & "\root\WMI") set colNICProps = objWMI.ExecQuery("SELECT * FROM MSNdis_LinkSpeed") for each objProp in colNICProps WScript.echo " Active:" & objProp.Active WScript.echo " Link Speed:" & objProp.NdisLinkSpeed WScript.echo " Instance Name:" & objProp.InstanceName & " - " & objNICInfo.Caption next WScript.echo "" Next WScript.echo "" Set objNICinfo = Nothing '// NIC Info WScript.echo "NIC Link Information:" WScript.echo "=======================" set objWMI = GetObject("winmgmts:\\" & servername & "\root\WMI") set colNICProps = objWMI.ExecQuery("SELECT * FROM MSNdis_LinkSpeed") for each objProp in colNICProps WScript.echo " Instance Name:" & objProp.InstanceName WScript.echo " Active:" & objProp.Active WScript.echo " Link Speed:" & objProp.NdisLinkSpeed & " bps" next WScript.echo "" WScript.echo "" Set objNICinfo = Nothing '// Powersupply Info WScript.echo "Power Supply Information:" WScript.echo "=======================" intPSCount = 0 For Each objPSInfo In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_PowerSupply") intPSCount = intPSCount + 1 Next WScript.echo " Number of Power Supplies: " & intPSCount WScript.echo "" WScript.echo "" Set objPSinfo = Nothing End If WScript.echo "------------------------------------------------" Else objStdOut.Write "Usage: cscript hardware.vbs /computer:[Computer Name]" objStdOut.close WScript.quit End If ' Error Checking Function Function errorChecking(ComputerName) errorChecking = False If err.number <> 0 Then If err.number = "462" Then WScript.echo ComputerName & ",Error,Unable to connect" err.Clear() errorChecking = True ElseIf err.number = "70" Then 'General access denied error WScript.echo ComputerName & ",Error,Permission Denied while trying to connect." err.Clear() errorChecking = True ElseIf err.number = "451" Then 'HEX Error is: 1C3 err.Clear() errorChecking = True ElseIf err.number = "-2147023174" Then 'The RPC server is unavailable. WScript.echo ComputerName & ",Error,Unable to connect error number -2147023174." err.Clear() errorChecking = True ElseIf err.number = "-2147023836" Then WScript.echo ComputerName & ",Error,Unable to connect error number --2147023836." err.Clear() errorChecking = True ElseIf err.number = "-2147022986" Then WScript.echo ComputerName & ",Error,Unable to connect error number -2147022986." err.Clear() errorChecking = True Else WScript.echo "Error is: " & err.number WScript.echo "HEX Error is: " & Hex(err.number) WScript.echo "Desc. is: " & err.Description WScript.echo "Source is: " & err.Source err.Clear() End If End If End Function 

有关通过WMI检索信息的文档

类和属性:

操作系统 (Win32_OperatingSystem)

  • 名称
  • CSDVersion
  • BuildNumber
  • ServicePackMajorVersion
  • ServicePackMinorVersion

网卡 (Win32_NetworkAdapter)

  • 生产厂家
  • 产品名称
  • 最大速度
  • 速度
  • 适配器types

电源(电stream传感器) (Win32_CurrentProbe)

例子:

  • 电脑硬件
  • 联网
  • 操作系统

WMI脚本的存储库

微软的Scriptomatic v2是我最喜欢的工具之一。 我喜欢把整个WMI API放在口袋里。
它会写你需要的脚本给你:)

http://www.microsoft.com/downloads/details.aspx?familyid=09DFC342-648B-4119-B7EB-783B0F7D1178&displaylang=en

Microsoft的Scriptomatic实用程序会根据系统上提供的所有WMI(Windows Management Instrumentation)提供程序(这是您现有的脚本正在使用的)生成代码片段。 顺便说一句,以上脚本编写的语言是VBScript,因此您将需要select该语言作为Scriptomatic输出的代码使用的语言。

请享用!

你也可以试试sydi-server。 它已经有了一些相当不错的function。 也许至less看剧本看是否有其他你可能想要的东西。

http://sydiproject.com/