(如果这应该在 stackoverflow 上,请告诉我...但在这里似乎更合适)
我从这个网站在线找到了下面的脚本: http://forums.webhostautomation.com/showthread.php?t=8667
有人可以帮忙添加(如果可能)以下查询吗:
****电源数量***
****操作系统和服务包级别***
****NIC 数量和 NIC 类型(Gb/等)***
我不太擅长编写脚本,当我开始添加这些功能时,我最终破坏了脚本。
先感谢您!
'*****************************************************
' 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
答案1
试试这个。脚本底部添加了新信息。需要注意的是,NIC(ndis)链接速度由与其他 NIC 属性不同的提供商提供。因此,NIC 信息有 2 个新部分: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
答案2
答案3
微软的 Scriptomatic v2 是我最喜欢的工具之一。它就像是口袋里装着整个 WMI API。
它会为你编写所需的脚本:)
答案4
您也可以尝试看一下 sydi-server。它已经具备一些非常不错的功能。也许至少看一下脚本,看看它是否还有其他您想要的东西。