Count 如何获取64位机器上的处理器数量?

Count 如何获取64位机器上的处理器数量?,count,wmi,processor,Count,Wmi,Processor,如何找到64位Windows 2003服务器上的CPU数量?这个问题的答案不起作用。使用Win32_ComputerSystem.NumberOfProcessors返回无 如果可能的话,我更喜欢使用WMI的方法。我已经有一个脚本,他所有的机器,我需要这个信息从抓取磁盘信息 谢谢试试Win32_处理器怎么样 strComputer = "." Set objWMIService = GetObject("winmgmts:"{impersonationLevel=impersonate}!\\"

如何找到64位Windows 2003服务器上的CPU数量?这个问题的答案不起作用。使用Win32_ComputerSystem.NumberOfProcessors返回无

如果可能的话,我更喜欢使用WMI的方法。我已经有一个脚本,他所有的机器,我需要这个信息从抓取磁盘信息


谢谢

试试Win32_处理器怎么样

strComputer = "."
Set objWMIService = GetObject("winmgmts:"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")    
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")

接近。以下是我使用的脚本:

import wmi

servers = ['XXX','YYY']

for servername in servers:
    connection = wmi.connect_server (server=servername)
    c = wmi.WMI (wmi=connection)
    print servername

    for proc in c.Win32_Processor():
        print proc.name
    print
输出为:

XXX

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

YYY

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器

英特尔(R)奔腾(R)III至强处理器


我应该只看到每台服务器有两个ProcesseCor。

您可以通过WMI查询来实现这一点。以下脚本将每个逻辑CPU的SocketDesignation名称放入csv文件中服务器列表的数据库表中。填充表后,运行以下查询将提供物理和逻辑处理器的计数:

select servername, COUNT(cpuname) 'LogicalCPUCount', COUNT(distinct cpuname) 'PhysicalCPUCount'
from tmp_cpu
group by servername
*****WMI脚本-在运行之前,您需要调整连接并创建tmp_cpu表*****

$query = "delete sqlserverinventory.dbo.tmp_cpu"

Invoke-Sqlcmd -Query $query -ServerInstance "xxxxxxxx"

 Invoke-Sqlcmd -Query "select servername from sqlserverinventory.dbo.server where servername in (select servername from sqlserverinventory.dbo.vw_Instance_Autoload);" -ServerInstance "xxxxxxxx" | out-file -filepath "v:\scripts\server_list.csv"

 (Get-Content v:\scripts\server_list.csv) | where {$_.readcount -gt 3} | Set-Content v:\scripts\server_list.csv

$servers = Get-Content "V:\scripts\server_list.csv"
## $servers = Invoke-Sqlcmd -Query "select servername from sqlserverinventory.dbo.vw_Instance_Autoload;" -ServerInstance "xxxxxxxx"

foreach ($server in $servers){

    $server = $server.Trim()

    $SQLServices = Get-WmiObject -ComputerName $server -Namespace "root\CIMV2" -query "SELECT SocketDesignation FROM Win32_Processor where CPUStatus=1 or CPUStatus=4" 

    forEach ($SQLService in $SQLServices) {

        $PhysicalCPU = $SQLService.SocketDesignation

        $insert_query = "INSERT INTO sqlserverinventory.dbo.tmp_cpu (ServerName,CPUName) VALUES('$server','$PhysicalCPU')"

        ## "sql - $insert_query" 
        Invoke-Sqlcmd -Query $insert_query -ServerInstance "xxxxxxxx"
     } 
 }
这将有助于:

        ManagementObjectSearcher mgmtObjects = new ManagementObjectSearcher("Select * from Win32_ComputerSystem");

        foreach (var item in mgmtObjects.Get())
        {
            Console.WriteLine("NumberOfProcessors:" + item.Properties["NumberOfProcessors"].Value);
            Console.WriteLine("NumberOfLogicalProcessors:" + item.Properties["NumberOfLogicalProcessors"].Value);
        }

接近。以下是我使用的脚本:导入wmi服务器=['xxx','yyy','TRIGOLDDB']用于服务器中的服务器名:connection=wmi.connect_服务器(server=servername)#,user=“tim”,password=“secret”)c=wmi.wmi(wmi=connection)打印c.Win32_处理器中proc的服务器名():#打印“{0:>10}{1}{2:3}GBs免费:{3:3}GBs({4:5.2f}%free)“.format(disk.VolumeName,disk.Caption,(long(disk.Size)/1024/1024/1024),(long(disk.FreeSpace)/1024/1024/1024),(100.0*long(disk.FreeSpace)/long(disk.Size)))print proc.name打印它列出的8应该是2(2个四元组)。也许你应该将其发布在评论部分,以便保留格式,以方便其他读者。我采纳了你的建议-如下。格式仍然有点不合适:-(