Оповещение в Телеграмм о включении ПК на Windows

Цель.

Нужно узнать когда ребёнок включается компьютер.

Задача.

  1. Создать телеграмм bot и канал для уведомлений.
  2. Написать скрипт для отправки сообщения.
  3. Создать задачу на выполнение скрипта при включении ПК.
  4.  Упростить установку.

1. Создать телеграмм bot и канал для уведомлений.

Что­бы соз­дать бота, нам нуж­но дать ему наз­вание, адрес и получить токен — стро­ку, которая будет однознач­но иден­тифици­ровать нашего бота для сер­веров Telegram. Зай­дем в Telegram под сво­им акка­унтом и откро­ем «отца всех ботов», BotFather.

Жмем кноп­ку «Запус­тить» (или отпра­вим /start), в ответ BotFather приш­лет нам спи­сок дос­тупных команд:

  • /newbot — соз­дать нового бота;
  • /mybots — редак­тировать ваших ботов;
  • /setname — сме­нить имя бота;
  • /setdescription — изме­нить опи­сание бота;
  • /setabouttext — изме­нить информа­цию о боте;
  • /setuserpic — изме­нить фото ава­тар­ки бота;
  • /setcommands — изме­нить спи­сок команд бота;
  • /deletebot — уда­лить бота.

От­пра­вим бате‑боту коман­ду /newbоt, что­бы соз­дать нового бота. В ответ он поп­росит ввес­ти имя будуще­го бота, его мож­но писать на рус­ском. Пос­ле вво­да име­ни нуж­но будет отпра­вить адрес бота, при­чем он дол­жен закан­чивать­ся на сло­во bot или _bot.

Ког­да мы наконец най­дем сво­бод­ный и кра­сивый адрес для нашего бота, в ответ получим сооб­щение, в котором пос­ле фра­зы Use this token to access the HTTP API будет написа­на стро­ка из букв и цифр — это и есть необ­ходимый нам токен. Сох­раним ее где‑нибудь на сво­ем компь­юте­ре, что­бы потом исполь­зовать в скрип­те бота. Создаём канал и делаем бота администратором канала. В дальнейшем в канал будут приходить сообщения.

ID чата можно узнать отправив заброс боту  https://api.telegram.org/botTOKEN/getUpdates.

 

2. Написать скрипт для отправки сообщения.

PowerShell- cкрипт
$token = "токен бота" 
echo $chat_id = "id канала" 
echo $text = "PC START NOW!" >>
echo $URI = "https://api.telegram.org/bot" + $token + "/sendMessage?chat_id=" + $chat_id + "&text=" + $text 
echo $Request = Invoke-WebRequest -URI ($URI)

3. Создать задачу на выполнение скрипта при включении ПК.

Для планирования и автоматического выполнения заданий в среде Windows предусмотрено стандартное программное средство Планировщик заданий управлениями запланированными задачами в среде графического интерфейса пользователя может использоваться консоль управления MMC ( Microsoft Management Console ) с модулем taskschd.msc или утилита командной строки Schtask.exe
chtasks /create /tn "ИМЯ ЗАДАЧИ" /tr "powershell.exe  -file "ПУТЬ К СКРИПТУ"" /sc onstart /ru system .

Но есть НЮАНС — Execution Policy. Политика выполнения скриптов по умолчанию  запрещает выполнение любых скриптов.

Доступны следующие значения PowerShell Execution Policy:

  • Restricted – запрещен запуск скриптов PowerShell, можно выполнять только интерактивные команды в консоли;

Do you want to run software from this untrusted publisher? File .ps1 is published by CN=test1 and is not trusted on your system. Only run scripts from trusted publishersвы хотите запустить powershell скрипт от недоверенного издателя?

  • RemoteSigned – можно запускать локальные PowerShell скрипты без ограничения. Можно запускать удаленные PS файлы с цифровой подписью (нельзя запустить PS1 файлы, скачанные из Интернета, запущенные из сетевой папки по UNC пути и т.д.);
  • Unrestricted – разрешен запуск всех PowerShell скриптов;

При запуске сторонних PowerShell скриптов может появляется предупреждение с подтверждением запуска, см. ниже.

  • Bypass – разрешён запуск любых PS файлов (предупреждения не выводятся) – эта политика обычно используется для автоматического запуска PS скриптов без вывода каких-либо уведомлений (например при запуске через GPO, SCCM, планировщик и т.д.) и не рекомендуется для постоянного использования;
  • Default – сброс настроек выполнения скриптов на стандартную;

В Windows 10 значение политики выполнения PowerShell по-умолчанию Restricted, а в Windows Server 2016 — RemoteSigned.

  • Undefined – не задано. Применяется политика Restricted для десктопных ОС и RemoteSigned для серверных.      

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

schtasks /create /tn "up_pc" /tr "powershell.exe -noprofile -executionpolicy bypass -file "C:\temp\up_pc.ps1"" /sc onstart /ru system

4. Упростить установку.

Вся установка сводится к запуску всего одно скрипта, который создаёт основной скрипт + задачу на выполнение.

mkdir c:\temp
echo $token = «ИМЯ ЗАДАЧИ» >c:\temp\up_pc.ps1
echo $chat_id = «id канала»  >>c:\temp\up_pc.ps1
echo $text = «PC START NOW!» >>c:\temp\up_pc.ps1
echo $URI = «https://api.telegram.org/bot» + $token + «/sendMessage?chat_id=» + $chat_id + «&text=» + $text >>c:\temp\up_pc.ps1
echo $Request = Invoke-WebRequest -URI ($URI) >c:\temp\up_pc.ps1
schtasks /create /tn «up_pc» /tr «powershell.exe -noprofile -executionpolicy bypass -file «c:\temp\up_pc.ps1″» /sc onstart /ru system

Опубликовано в рубрике Windows