Peeking Under the Covers
You might expect that with a name like PowerGadgets this product would be limited to Windows Vista and its sidebar, but it's not. As you've seen, PowerGadgets does let you build true gadgets easily for Vista's sidebar, but it also functions quite nicely on Windows XP and 2003, rendering the charts, gauges, and maps on the desktop. That's because, under the covers, PowerGadgets uses a GDI+ based .NET library. From the assembly names, it seems probable that PowerGadgets has OEM'ed the popular ChartFX engine, taking advantage of the power of its graphing library and putting the results on the desktop. This has the fortunate side effect of immediately making anyone familiar with using graphing control libraries in Visual Studio .NET comfortable with PowerGadgets Creator.
PowerGadgets and the Windows PowerShell
While the charts and gauges on the desktop are impressive for their convenience, design-time options, and data integration, they are not revolutionary. With the exception of the cool and intelligent Vista sidebar integration, you can generate equivalent charts and gauges with minimal coding using a charting library and standard data sources. But PowerGadgets breaks some ground with its tight integration with the new Windows PowerShell as a data source.
Windows PowerShell is a large topic, but suffice it to say that it is an object-based scripting language that has the full power of WMI, COM, .NET, plus its own script commands or Cmdlets (pronounced "Commandlets") at its disposal. As a one-line movie pitch, PowerShell would be "object-oriented programming meets the UNIX shell."
Again, PowerShell is not Vista-dependent and plays nicely with earlier Windows operating systems. In fact, it didn't ship with the first release of Vista, although it should ship with the consumer version at the end of January 2007. So, if you are running an earlier version of Vista, PowerGadgets cannot leverage PowerShell.
Using PowerShell as a base, PowerGadgets provides its own set of Cmdlets that control chart and gauge rendering. Essentially, users are (ala UNIX) piping PowerShell objects to a PowerGadget Cmdlet, which formats the results nicely and presents them on the desktop. The real power of PowerGadgets is in its tight integration with the PowerShell itself. PowerGadgets, in fact, provides its own command-line shell that integrates its Cmdlets with PowerShell.
|Figure 5. Figure 5. Memory Usage Monitor Created from the PowerGadgets Command Shell: Users can customize the scripts provided with PowerGadget.|
After starting the Windows PowerShell with PowerGadgets, you can pipe any command via the '|' operator to a chart, gauge or map, and specify refresh rates so that the data is harvested in near-real-time. In the example below, the PowerShell invokes a WMI object, pulls the FreePhysicalMemory
from that object, and then redirects the raw data to a PowerGadget gauge refreshing every 5 seconds.
get-wmiobject Win32_OperatingSystem | select
FreePhysicalMemory | out-gauge -refresh 0:0:5
shows the results on the desktop.
Without purchasing a canned performance monitoring application, PowerGadgets is undoubtedly the fastest and most elegant way to visualize application and system data on the desktop. The strength of PowerGadgets comes from its relative simplicityit combines a visually appealing graphing library capable of visually rendering virtually any type of data with a new data sourceWindows PowerShell.
Despite the simplicity of building the demo project in this article, I worry a little that the marketing appeal to non-coding IT professionals may overstate the plug-and-play nature of the product somewhat. Early adopters will have to rely on an as yet immature public domain supply of PowerShell scripts and the PowerGadget samples or delve into PowerShell scriptingand PowerShell scripting is a full-blown programming topic that may frustrate users who are expecting full out-of-the-box monitoring capabilities on the desktop.