2009-07-15 38 views
3

如何查找64位窗口2003服务器上的CPU数量?这个thread的答案没有奏效。使用Win32_ComputerSystem.NumberOfProcessors返回无。如何获取64位机器上的处理器数量?

如果可能的话,我宁愿使用WMI来做到这一点。我有一个脚本,它已经是我需要抓取磁盘信息的所有机器了。

感谢

回答

2

怎么样给Win32_Processor一试

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

关闭。这里是我使用的脚本: import wmi servers = ['xxx','yyy','TRIGOLDDB'] for servername in servers: connection = wmi.connect_server(server = servername)#,user =“tim “),password =”secret“) c = wmi.WMI(wmi = connection) print servername for proc in c.Win32_Processor(): #print'{0:> 10} {1} {2:3格式(disk.VolumeName,disk.Caption,(long(disk.Size)/ 1024/1024/1024),(long(((4:5.2f}%free) disk.FreeSpace)/ 1024/1024/1024),(100.0 * long(disk.FreeSpace)/ long(disk.Size))) print proc.name print 它列出8应该是2广告)。 – user60890 2009-07-15 15:05:17

1

关闭。这是我所使用的脚本:

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 Xeon处理器

英特尔(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至强处理器

我应该只看到两个processecors每个服务器。

0

您可以通过WMI查询来完成此操作。以下脚本将csv文件中服务器列表的每个逻辑CPU的SocketDesignation名称放入数据库表中。一旦表被填充运行下面的查询会给你的物理和逻辑处理器的数量:

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" 
    } 
} 
0

这将工作:

 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); 
     }