如何查找64位窗口2003服务器上的CPU数量?这个thread的答案没有奏效。使用Win32_ComputerSystem.NumberOfProcessors返回无。如何获取64位机器上的处理器数量?
如果可能的话,我宁愿使用WMI来做到这一点。我有一个脚本,它已经是我需要抓取磁盘信息的所有机器了。
感谢
如何查找64位窗口2003服务器上的CPU数量?这个thread的答案没有奏效。使用Win32_ComputerSystem.NumberOfProcessors返回无。如何获取64位机器上的处理器数量?
如果可能的话,我宁愿使用WMI来做到这一点。我有一个脚本,它已经是我需要抓取磁盘信息的所有机器了。
感谢
怎么样给Win32_Processor一试
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 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每个服务器。
您可以通过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"
}
}
这将工作:
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);
}
关闭。这里是我使用的脚本: 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