I'm looking for a generic way to query a network of Windows PCs (XP/Vista/7/Server 2k3) for their current power consumption - ideally in Watts! I'm sure this kind of thing is built into WMI, but it might just be available through the manufacturers proprietary WMI-add-on - which I'd like to avoid. I just can't find anything.
I'm not stuck on WMI, just some mechanism of querying a box for it's current power usage.
If somebody finds a way to query this, I'll write an app to do some nice monitoring and post it back here for the community.
Mike
You can get this from most recent generation servers via IPMI provided they have an out of band management interface such as ILO (HP), DRAC (Dell), RSA (IBM), Fujitsu Siemens (IRMC). These have mostly been optional extras in older servers but the recent trend has been to include a basic version in most midrange servers at least. The much more basic Baseboard Management Controller (BMC) interfaces will also generally give you pretty good power consumption numbers and a capability of this type has been pretty much standard on Server hardware from most vendors for quite some time although it generally will have to be explicitly enabled if you want to use the out of band capability.
The one problem with IPMI is that you need a systems management console of some sort to make much use of it. There are some simple command line tools available from Intel that might do what you want and they have some demo code if you want to roll your own stuff.
On a fully configured server you can get in band access to the BMC counters (it gives you power consumption, temperature's from the enclosure sensors, fan speeds and some cpu data amongst others) via WMI\SNMP if you have installed the appropriate vendor's management agents. The problem with this is that there is no standard target counter set for you to query.
On the client side there is some support for IPMI in Intel vPro (AMT) and AMD ASF enabled business clients. Again you will have to configure these management capabilities on the target systems which can be quite a headache.
This is a feature that is available on some of the systems management consoles - if you want to play with one then Dell's DMC is a free download and it will give you all of this for quite a broad range of Servers and Clients as it is not specifically limited to supporting Dell hardware. This is in an early release state at the moment but it is full blown systems management software though so it needs a bit of work to get it to do what you want.
You'll struggle to find a generic method as this information isn't provided by every machine. That said a lot of the big manufacturers (HP,IBM, Dell etc.) do provide instrumentation inside their machine to allow for this kind of information, but you'd have to install their tools and access this information from those tools and they won't all be the same.
There are 2 WMI classes which may be able to provide a starting point, Win32_CurrentProbe and Win32_VoltageProbe, however both of them depend on a hardware device to provide the relevant data.
I don't know that there's any better solution to your problem. The OS, whether via the WMI subsystem or any other method, will need to get this data from some hardware, and regular PC/server hardware just doesn't provide it as far as I'm aware.
Some HP's and IBM's can give a true indication of the power used via the out of band management unit ( eg the ILO or RSA ). They will supply drivers to query this additional hardware.
Alternatively you could use an external APC device that measures the current draw of a circuit.
if you have the budget, maybe an out of band solution would be better. There are powerstrips, or smart PDUs, available from vendors like APC that is internet enabled and can report individual socket power usage and offers remote power management as well. The upside would be that it is generic for all machines, but this would require you to have all the machines close by so as not to waste the socket.