Главная
» WINDOWS
»
Как получать уведомления о подключении и отключении кабеля питания в Windows 10
Как получать уведомления о подключении и отключении кабеля питания в Windows 10
Чтобы получать уведомления на рабочем столе при подключении или отключении кабеля питания, запустите небольшой скрипт-наблюдатель в Windows PowerShell. Он проверяет состояние питания компьютера от сети переменного тока каждые две секунды, отображает уведомление при изменении этого состояния и воспроизводит стандартный звук Windows Asterisk. Он использует Windows PowerShell 5.1 и Windows Forms, входящие в состав Windows, поэтому отдельная загрузка AutoHotkey не требуется. Скрипт должен оставаться запущенным в вашей авторизованной сессии на рабочем столе, и компьютер должен сообщать об известном состоянии питания.
Что может обнаружить система оповещения
В скрипте указано SystemInformation.PowerStatus.PowerLineStatus. Microsoft описывает три возможных значения: Online, Offline, и Unknown. На ноутбуке «онлайн» обычно означает подключение внешнего источника питания от сети переменного тока, а «оффлайн» — работу от батареи. Если компьютер сообщает «неизвестно», скрипт молчит, а не пытается угадать. См. документацию Microsoft по значениям SystemInformation.PowerStatus и PowerLineStatus .
Эта программа отслеживает изменение состояния между питанием от сети переменного тока и от батареи. Она не сообщает, заряжается ли батарея, и не может уведомить вас, пока Windows выключена. Поскольку проверка выполняется каждые две секунды, между проверками могут происходить очень кратковременные изменения. Если компьютер переходит в спящий режим, изменение может быть замечено после его пробуждения только в том случае, если сообщаемое состояние отличается от последнего состояния, зафиксированного скриптом.
Создайте сценарий PowerShell.
Откройте Блокнот и вставьте весь скрипт, приведенный ниже.
Выберите Файл > Сохранить как . Сохраните файл в папке «Документы» под именем PowerCableAlerts.ps1. Установите тип сохранения « Все файлы (*.*)» , чтобы Блокнот не добавлял скрытое .txtрасширение.
Для выполнения описанных ниже действий используйте стандартное приложение Windows PowerShell. В примере используется Windows Forms, доступное в Windows PowerShell 5.1.
Первое значение состояния используется в качестве базового, поэтому скрипт не сообщает о соединении, которое уже было установлено на момент запуска. Он выдает предупреждение при последующем изменении. Уведомление использует NotifyIconкомпонент Windows Forms и его метод; Windows может регулировать время отображения уведомления в зависимости от своих настроек. Ознакомьтесь с обзором NotifyIcon и справочником ShowBalloonTipShowBalloonTip от Microsoft .
Запустите его и протестируйте оба оповещения.
Откройте Windows PowerShell из меню «Пуск». Запускать его от имени администратора не требуется.
Только в течение этой сессии разрешите выполнение скрипта, а затем запустите его:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
& "$env:USERPROFILE\Documents\PowerCableAlerts.ps1"
Оставьте окно PowerShell открытым. Отключите кабель питания и подождите несколько секунд, пока не появится сообщение об отключении; затем снова подключите его, чтобы проверить сообщение о подключении. Нажмите Ctrl+C в этом окне, когда захотите остановить выполнение скрипта.
Для первого теста запустите скрипт из обычной сессии Windows PowerShell.
Область Processдействия политики выполнения применяется только к текущему процессу PowerShell и исчезает после его завершения. Она не изменяет политику компьютера навсегда. Microsoft объясняет области действия в разделе about_Execution_Policies . Если рабочая или учебная политика блокирует выполнение команды, следуйте правилам администратора, а не изменяйте общесистемные параметры компьютера.
Сообщение об отключении появляется после того, как скрипт обнаруживает переход от питания от сети переменного тока к питанию от батареи.
Начать автоматическое включение оповещений при входе в систему.
Найдите «Планировщик задач» в меню «Пуск» и выберите «Создать простую задачу» .
Назовите задачу « Оповещения о подключении силового кабеля» . Установите триггер на « При входе в систему» , затем выберите «Запустить программу» в качестве действия.
В поле «Программа/скрипт» введите powershell.exe. В поле «Добавить аргументы» введите следующее, заменив YourNameна имя вашей папки пользователя Windows:
После завершения работы мастера откройте свойства задачи и выберите «Запускать только при входе пользователя в систему» . Это позволит скрипту оставаться в вашей сессии рабочего стола, где он сможет отображать уведомления. Используйте функцию «Запустить » один раз для проверки, затем выйдите из системы и войдите снова, чтобы убедиться, что он запускается автоматически.
Выберите триггер входа в систему, чтобы наблюдатель запускался с вашей рабочей сессии.
Чтобы отключить автоматические оповещения, откройте планировщик задач, щелкните правой кнопкой мыши «Оповещения о кабелях питания» и выберите «Отключить» . Чтобы завершить запущенный в данный момент запланированный экземпляр, выберите «Завершить» для этой задачи. Если вы хотите только временно приостановить его, достаточно отключить задачу; она не запустится при следующем входе в систему, пока не будет снова включена.
Если уведомление не появляется
Проверьте Настройки > Система > Уведомления и действия . Включите уведомления и убедитесь, что функция «Помощник фокусировки» не скрывает баннеры. Уведомление может оставаться доступным в Центре уведомлений даже после исчезновения баннера.
Убедитесь, что скрипт все еще выполняется. Скрипт, запущенный вручную, завершает работу при закрытии окна PowerShell. Для запланированного запуска проверьте состояние задачи в планировщике задач.
Если после отключения и повторного подключения оповещения не появляется, возможно, устройство запрашивает Unknownинформацию о состоянии сети. Этот API сообщает о состоянии, которое Windows получает от оборудования, поэтому скрипт не может создать надежное оповещение о подключении/отключении, если это состояние недоступно.
Если всплывающее окно появляется, но звука нет, проверьте настройки громкости и звука Windows. Скрипт воспроизводит стандартный звук Asterisk, а не пользовательский аудиофайл.