Разное - [решено] Событие и код перехода на питание от батареи

Аватара пользователя
n_i_x

Re: Разное - [решено] Событие и код перехода на питание от батареи

Сообщение n_i_x »

Цитата n_i_x:



как разделить сообщение с одинаковыми кодами, но разными событиями
Разное - [решено] Событие и код перехода на питание от батареи




Зачем? Сделайте разные коды (та часть, которую вы приводили выше):

Код:

Код: Выделить всё

If ($batt.BatteryStatus -ne $prevBatteryStatus) {
		if ($prevBatteryStatus -like '2') {
			$EventID = 10
			$EventMsg = "Switched to Battery Power! $($Message.ChargeRemMsg), Minutes: $($Message.RemTimeMsg)"
		} else {
			$EventID = 11
			$EventMsg = "Switched back to AC Power! $($Message.ChargeRemMsg), Minutes: $($Message.RemTimeMsg)"
		}
		Write-EventLog -LogName BatteryMonitor -Source BattMon -EventID $EventID -Message $EventMsg -EntryType Warning -ComputerName $env:computername -ErrorAction:SilentlyContinue
Аватара пользователя
Blast

Re: Разное - [решено] Событие и код перехода на питание от батареи

Сообщение Blast »

А в принципе, по первоначальной постановке вопроса я понял, что вам вам не нужно ежесекундный отчет в консоли, запись в журнал событий о запуске скрипта, о низком заряде батареи и т.д. Вам ведь нужно только, чтобы в журнал записывалось событие при отключении от сети и переход на питание от батареи? Если так, то скрипт можно существенно сократить - batterylog_0.zip

А если целью был просто запуск приложения при переходе на питание от батареи, то берите batterylog_1.zip и поправьте в нем путь к запуску программы в строке 12. Если программу нужно запускать с параметрами, то параметры указывайте за кавычками. Вместо C:\Program Files\ можете использовать переменную $env:ProgramFiles

Скрипт спокойно запускается из планировщика и при соответствующей настройке задачи не показывает свое окно.
Вложения
batterylog_1.zip
(627 байт) 0 скачиваний
batterylog_1.zip
(627 байт) 0 скачиваний
Вложения
batterylog_0.zip
(692 байт) 0 скачиваний
batterylog_0.zip
(692 байт) 0 скачиваний
Аватара пользователя
n_i_x

Re: Разное - [решено] Событие и код перехода на питание от батареи

Сообщение n_i_x »

Блин! Огромное человеческое спасибо!!!!!

Изначально у меня была задумка, что бы при переходе на питание от батареи, автоматически менялась тема оформления с заставки на чёрный фон, закрытие определённых приложений и тому подобное, а при переходе на питание от электросети возвращалось всё обратно. Всё подготовил для этого, но вот с событиями батареи запнулся)
Аватара пользователя
Blast

Re: Разное - [решено] Событие и код перехода на питание от батареи

Сообщение Blast »

В таком случае можно опять же обойтись без записей в журналы событий (незачем их загаживать чем попало).

Примерно так (требуется проверка, спешил, мог напортачить):

Код: Выделить всё

$checkInterval = 1
$prevBatteryStatus = 2
$prevLogTime = 0
do {
    $batt = Get-WmiObject -Class Win32_Battery
If ($batt.BatteryStatus -ne $prevBatteryStatus) {
		if ($prevBatteryStatus -like '2') {
			& "<путь к батнику, который меняет настройки при работе от батареи>"
		} else {
			& "<путь к батнику, который меняет настройки при работе от сети>"
		}
	}
	$prevBatteryStatus = $batt.BatteryStatus
	$currLogTime = New-TimeSpan "01 January 1970 00:00:00" $(Get-Date)
	$diff = $currLogTime.TotalSeconds - $prevLogTime.TotalSeconds
    Sleep $checkInterval
}
while (1)
Аватара пользователя
bonderlogin

Re: Разное - [решено] Событие и код перехода на питание от батареи

Сообщение bonderlogin »

Здравствуйте. Последний скрипт хорош, и мне подходит для одной из задач. Но я так понял, что он не просто проверяет состояние питания, а сравнивает его с предыдущим, работая циклически? А для второй моей задачи нужно просто единоразово запустить подобный скрипт, чтобы он, в свою очередь, выполнил действия в зависимости от типа питания (как и в предыдущем примере) и завершился. Как его отредактировать для этих целей?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»