Цель.
Нужно узнать когда ребёнок включается компьютер.
Задача.
- Создать телеграмм bot и канал для уведомлений.
- Написать скрипт для отправки сообщения.
- Создать задачу на выполнение скрипта при включении ПК.
- Упростить установку.
1. Создать телеграмм bot и канал для уведомлений.
Чтобы создать бота, нам нужно дать ему название, адрес и получить токен — строку, которая будет однозначно идентифицировать нашего бота для серверов Telegram. Зайдем в Telegram под своим аккаунтом и откроем «отца всех ботов», BotFather.
Жмем кнопку «Запустить» (или отправим /), в ответ BotFather пришлет нам список доступных команд:
/— создать нового бота;newbot /— редактировать ваших ботов;mybots /— сменить имя бота;setname /— изменить описание бота;setdescription /— изменить информацию о боте;setabouttext /— изменить фото аватарки бота;setuserpic /— изменить список команд бота;setcommands /— удалить бота.deletebot
Отправим бате‑боту команду /, чтобы создать нового бота. В ответ он попросит ввести имя будущего бота, его можно писать на русском. После ввода имени нужно будет отправить адрес бота, причем он должен заканчиваться на слово bot или _bot.
Когда мы наконец найдем свободный и красивый адрес для нашего бота, в ответ получим сообщение, в котором после фразы Use this token to access the HTTP API будет написана строка из букв и цифр — это и есть необходимый нам токен. Сохраним ее где‑нибудь на своем компьютере, чтобы потом использовать в скрипте бота. Создаём канал и делаем бота администратором канала. В дальнейшем в канал будут приходить сообщения.
ID чата можно узнать отправив заброс боту https://api.telegram.org/botTOKEN/getUpdates.
2. Написать скрипт для отправки сообщения.
$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. Создать задачу на выполнение скрипта при включении ПК.
chtasks /create /tn "ИМЯ ЗАДАЧИ" /tr "powershell.exe -file "ПУТЬ К СКРИПТУ"" /sc onstart /ru system .Но есть НЮАНС — Execution Policy. Политика выполнения скриптов по умолчанию запрещает выполнение любых скриптов.
Доступны следующие значения PowerShell Execution Policy:
- Restricted – запрещен запуск скриптов PowerShell, можно выполнять только интерактивные команды в консоли;
- AllSigned – разрешено выполнять только подписанные PS скрипты с цифровой подписью от доверенного издателя (можно подписать скрипт самоподписанным сертификатом и добавить его в доверенные). При запуске недоверенных скриптов появляется предупреждение:
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
- 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
