# Exit this script if the current device doesn't have a built-in battery If ( $null -eq (Get-CimInstance -ClassName Win32_Battery -ErrorAction SilentlyContinue) ) { Microsoft.Powershell.Utility\Write-Output "This endpoint does not have a battery" ; Exit } # Define file paths $Today = Get-LongDate $ReportPathNoExt = "${OutputDirectory}\batteryreport_${Env:COMPUTERNAME}_${Today}" $HtmlReportPath = $ReportPathNoExt + '.html' $XmlReportPath = $ReportPathNoExt + '.xml' # Delete reports if they already exist If ( Test-Path $XmlReportPath ) { Remove-Item -Path $XmlReportPath -Force } If ( Test-Path $HtmlReportPath ) { Remove-Item -Path $HtmlReportPath -Force } # Generate the XML report Write-Output "Generating XML battery report: ${XmlReportPath}" Try { Start-Process "powercfg.exe" -ArgumentList "/batteryreport /output ""${XmlReportPath}"" /xml" -Wait } Catch { Write-Error $_.Exception.Message } # Convert XML report to HTML Write-Output "Generating HTML battery report: ${HtmlReportPath}" Try { Start-Process "powercfg.exe" -ArgumentList "/batteryreport /transformxml ""${XmlReportPath}"" /output ""${HtmlReportPath}""" -Wait } Catch { Write-Error $_.Exception.Message }