Назад | Перейти на главную страницу

Пожалуйста, помогите мне добавить в этот сценарий, чтобы получить информацию об оборудовании сервера

(Если это должно быть в stackoverflow, просто скажите мне ... но здесь это показалось более подходящим)

Я нашел приведенный ниже сценарий в Интернете с этого сайта: http://forums.webhostautomation.com/showthread.php?t=8667

Может ли кто-нибудь помочь в добавлении (если возможно) следующих запросов:

**** Количество блоков питания ***

**** Операционная система и уровень пакета обновления ***

**** Количество сетевых адаптеров и тип сетевого адаптера (Гб / т. д.) ***

Я не очень хорошо пишу сценарии, и как только я начал добавлять эти функции, я закончил тем, что сломал сценарий.

Заранее спасибо!

'*****************************************************
'       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. Таким образом, есть 2 новых раздела для информации о сетевом адаптере: информация об экземпляре сетевого адаптера и информация о канале сетевого адаптера. Каждый перечисляет все сетевые карты на вашем компьютере и дает соответствующую информацию.

'*****************************************************
'       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
  • Номер сборки
  • Версия
  • ServicePackMajorVersion
  • ServicePackMinorVersion

NIC (Win32_NetworkAdapter)

  • Производитель
  • Наименование товара
  • Максимальная скорость
  • Скорость
  • AdapterType

Источник питания (датчик тока) (Win32_CurrentProbe)

Примеры:

А хранилище скриптов WMI

Microsoft Scriptomatic v2 - один из моих любимых инструментов. Мне нравится, что у меня в кармане весь WMI API.
Он напишет нужный вам скрипт :)

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

Microsoft Скриптоматический Утилита генерирует фрагменты кода на основе всех поставщиков WMI (инструментария управления Windows), доступных в вашей системе (это то, что использует ваш существующий сценарий). Кстати, язык, на котором написан приведенный выше скрипт, - это VBScript, поэтому вы захотите выбрать его в качестве языка для вывода кода в Scriptomatic.

Наслаждайтесь!

вы также можете попробовать посмотреть на sydi-server. он уже сделан с некоторыми довольно хорошими функциями. возможно, по крайней мере, посмотрите на сценарий, чтобы узнать, есть ли в нем что-то еще, что вам может понадобиться.

http://sydiproject.com/