So I haven't totally given up on blogging - just that I have other work to do as well. But this was an interesting 5-minute scripting challenge, nothing what-so-ever to do with Hyper-V. Someone internally asked whether it was possible to get an alert when their laptop battery reached 95% to remind them to unplug it. (For some reason, they wanted to keep the battery between 15% and 95% - I'm not a lithium battery expert, but I always thought it was best to fully charge then fully discharge them. Anyway, reasons aside....). On the particular laptop, the OEM software didn't have a configuration utility to say something like "do not charge if battery level is above X%". Hence, a quick and dirty script to the rescue.
Save below as battery.vbs and put a shortcut to "wscript path-to\battery.vbs" in your startup folder. (I will attach it to once I figure out what's going on with the blog engine!!). Obviously it won't work accurately if you have multiple batteries, and I'm sure someone can PowerShell-ify it down to far less code. There's a challenge for someone...
Cheers
John.
set oLocator = CreateObject("WbemScripting.SWbemLocator")
set oServices = oLocator.ConnectServer(".","root\wmi")
set oResults = oServices.ExecQuery("select * from batteryfullchargedcapacity")
for each oResult in oResults
iFull = oResult.FullChargedCapacity
next
while (1)
set oResults = oServices.ExecQuery("select * from batterystatus")
for each oResult in oResults
iRemaining = oResult.RemainingCapacity
bCharging = oResult.Charging
next
iPercent = ((iRemaining / iFull) * 100) mod 100
if bCharging and (iPercent > 95) Then msgbox "Battery is at " & iPercent & "%",vbInformation, "Battery monitor"
wscript.sleep 30000 ' 5 minutes
wend