Powershell и батарея ноутбука

  • Михаил
  • 12 мин. на прочтение
  • 100
  • 12 Dec 2014
  • 12 Dec 2014

Возможно кому то будет полезна, мне по крайней мере, оно нужно пару раз в год, поэтому и решил что не мешает бы увековечить эту тему. Очень редко, но все же случается, что при написании скриптов под задачи выполняемые не на стационарах надо учитывать не только состояние батареи, но и уровень ее заряда.

Запрашиваем соответствующий класс

gwmi win32_battery

Что бы было красиво выполняем вот такой запрос

Get-wmiobject win32_battery | select Availability,EstimatedRunTime,EstimatedChargeRemaining,BatteryStatus,PSComputername

Из которого нам потребуется всего лишь

(Get-WmiObject win32_battery).estimatedChargeRemaining

Заодно запросим вот эту полезную штуку

(Get-WmiObject win32_battery).batterystatus

Где код ответа будет иметь следующие значения

ValueMeaning
1The battery is discharging.
2The system has access to AC so no battery is being discharged. However, the battery is not necessarily charging.
3Fully Charged
4Low
5Critical
6Charging
7Charging and High
8Charging and Low
9Charging and Critical
10Undefined
11Partially Charged

Вполне логично будет предположить что этот момент хотелось бы автоматизировать.

$bstatus = (Get-WmiObject -Class Win32_Battery —ea 0).BatteryStatus
 if($bstatus) {
 switch ($bstatus)
 {
 1 { "Battery is discharging" }
 2 { "The system has access to AC so no battery is being discharged. However, the battery is not necessarily charging." }
 3 { "Fully Charged" }
 4 { "Low" }
 5 { "Critical" }
 6 { "Charging" }
 7 { "Charging and High" }
 8 { "Charging and Low" }
 9 { "Charging and Critical " }
 10 { "Unknown State" }
 11 { "Partially Charged" }
}
}

Ну не забываем еще про availability

Get-wmiobject win32_battery |
 select @{Name="Availability";Expression={
 Switch ($_.Availability) {
 1 { "Other" ;break}
 2 { "Unknown" ;break}
 3 { "Running or Full Power";break}
 4 { "Warning" ;break}
 5 { "In Test";break}
 6 { "Not Applicable";break}
 7 { "Power Off";break}
 8 { "Off Line";break}
 9 { "Off Duty";break}
 10 { "Degraded";break}
 11 { "Not Installed";break}
 12 { "Install Error";break}
 13 { "Power Save — Unknown";break}
 14 { "Power Save — Low Power Mode" ;break}
 15 { "Power Save — Standby";break}
 16 { "Power Cycle";break}
 17 { "Power Save — Warning";break}
 }
 }},EstimatedRunTime,EstimatedChargeRemaining,BatteryStatus,PSComputername