Why?
Occasionally it is useful to check the battery health of a laptop, especially when a user reports that it doesn’t hold charge.
This Powershell script outputs both to C:\battery-report.html and directly to the activities feed on NinjaOne. It wraps the raw Generate BatteryHealth Report powercfg command with pass/fail reporting back to NinjaOne.
# ============================================================
function Write-ScriptResult {
param(
[string]$ScriptName,
[ValidateSet('pass','fail','warn')]
[string]$Status,
[string]$Message = ""
)
$entry = [PSCustomObject]@{
time = (Get-Date).ToUniversalTime().ToString("o")
script = $ScriptName
device = $env:COMPUTERNAME
status = $Status
error = $Message
} | ConvertTo-Json -Compress
$entry = $entry -replace '"', '\"'
Ninja-Property-Set scriptLastResult $entry
}
# ============================================================
try {
powercfg /batteryreport /output "C:\battery-report.html"
switch ($LASTEXITCODE) {
0 {
Write-ScriptResult -ScriptName "Battery-Report" -Status "pass" -Message "Battery report generated successfully."
}
default {
Write-ScriptResult -ScriptName "Battery-Report" -Status "fail" -Message "powercfg exited with code $LASTEXITCODE."
exit 1
}
}
}
catch {
Write-ScriptResult -ScriptName "Battery-Report" -Status "fail" -Message $_.Exception.Message
exit 1
}