Scripts/Get-PCBattery.ps1
Function Get-PCBattery { <# .SYNOPSIS Get battery information .DESCRIPTION Get battery information .PARAMETER ComputerName The target computer name .EXAMPLE Get-PCBattery -ComputerName LabPC2024 .NOTES N/A .LINK N/A #> [CmdletBinding ()] Param ( [Parameter (Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True, HelpMessage = 'Enter computer name' ) ] [String[]]$ComputerName ) BEGIN { $BatteryStatus = @{ '1' = 'Battery power' '2' = 'AC power' '3' = 'Fully charged' '4' = 'Low' '5' = 'Critical' '6' = 'Charging' '7' = 'Charging and high' '8' = 'Charging and low' '9' = 'Charging and critical' '10' = 'Undefined' '11' = 'Partially charged' } $BatteryChemistry = @{ '1' = 'Other ' '2' = 'Unknown' '3' = 'Lead acid' '4' = 'Nickel cadmium' '5' = 'Nickel metal hydride' '6' = 'Lithium-ion' '7' = 'Zinc air' '8' = 'Lithium polymer' } Function Show-Output ($Computer, $Values, $Status) { [PSCustomObject]@{ ComputerName = $Computer Caption = $Values.Caption Description = $Values.Description Name = $Values.Name BatteryStatus = $BatteryStatus["$($Values.BatteryStatus)"] Chemistry = $BatteryChemistry["$($Values.Chemistry)"] DesignVoltageMilliVolts = $Values.DesignVoltage DeviceID = $Values.DeviceID EstimatedChargeRemainingPercentage = $Values.EstimatedChargeRemaining EstimatedRunTimeMinutes = $Values.EstimatedRunTime TimeOnBattery = $Values.TimeOnBattery TimeToFullCharge = $Values.TimeToFullCharge Status = $Status } } } PROCESS { ForEach ($Computer In $ComputerName) { If (Test-Connection -ComputerName $Computer -Count 1 -Quiet) { Try { $Data = Get-WmiObject Win32_Battery -ComputerName $Computer | Select-Object * ForEach ($Item In $Data) { Show-Output $Computer.ToUpper() $Item 'Ok' } } Catch { Show-Output $Computer.ToUpper() $Null $PSItem.Exception.Message } } Else { Show-Output $Computer.ToUpper() $Null 'Unreachable' } } } END {} } |