PowerShell: отправка сообщений в Telegram

Мессенджер Telegram можно использовать как средство мгновенного оповещения о различных событиях в инфраструктуре, результатах выполнения скриптов или заданий планировщика. В этой статье мы покажем, как отправить текстовое уведомление в канал или группу Telegram с помощью PowerShell через API бота.

Сначала нужно создать новый бот в Telegram с помощью @BotFather. Найдите этого бота в клиенте Telegram и отправьте ему команды:
/start
/newbot

Укажите название бота и имя пользователя. BotFather сгенерирует для вам HTTP токен, который нужно скопировать и сохранить.

создать бота telegram

Для оправки уведомления в чат Telegram или конкретному пользователю нужно получить его ID. В данном случае я будут отправлять уведомления себе, поэтому с помощью @my_id_bot я получу свой ID:

/start

Your user ID: 987654321

Для отправки сообщения в Telegram нужно указать токен бота и имя вашего пользователя (группы):

$tg_token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
$tg_chat_id="987654321"

Для подключения к API Telegram нужно обязательно использовать протокол TLS 1.2. Убедитесь, что TLS 1.2 включен в вашей операционной системе Windows. PowerShell по умолчанию может использовать для подключения устаревшие протоколы SSL 3.0, TLS 1.0, или TLS 1.1. Чтобы использовать TLS 1.2 в текущей сессии, выполните команду:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Чтобы отправить сообщение в Telegram, выполните команду:

$message="Тестовое сообщение в Telegram из PowerShell"
$Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($Telegramtoken)/sendMessage?chat_id=$($Telegramchatid)&text=$($Message)"

Вы должны получить сообщение от бота.

Чтобы сделать уведомления более наглядными и красочными, можно использовать символы emoji и HTML форматирование:

$message= $currend_data + "⚠️ Скрипт обновления <b>Update1C</b> завершен с ошибками"
$Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($tg_token)/sendMessage?chat_id=$($tg_chat_id)&text=$($Message)&parse_mode=html"

отправка telegram сообщения из powershell

Если в вашей сети доступ в интернет выполняется через прокси сервер, вы можете указать есть с помощью параметра -Proxy командлета Invoke-WebRequest. Для аутентификации на прокси можно использовать аргумент -ProxyCredential .

$Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($Telegramtoken)/sendMessage?chat_id=$($Telegramchatid)&text=$($Message)" –Proxy "http://192.168.31.55:3128"

В PowerShell 7.x командлет Invoke-WebRequest использует настройки прокси, заданные в переменных окружения. Подробнее об использовании прокси в PowerShell.

Скрипт отправки сообщения в телеграм можно оформить в функцию и добавить ее в файл профиля PowerShell в Windows:

    function Send-Telegram {
        [CmdletBinding()]
        param(
            [Parameter()]
[string] $Message ) $tg_token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" $tg_chat_id="987654321" [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($tg_token)/sendMessage?chat_id=$($tg_chat_id)&text=$($Message)&parse_mode=html" return $Response }
Чтобы открыть текстовый файл с профилем PowerShell, который автоматически применяется при запуске процесса powershell.exe/pwsh.exe, выполните команду:

notepad $PSHOME\Profile.ps1

добавить функцию отправки в telegram в профиль powershell

Теперь вы можете использовать функцию отправки сообщения в канал Telegram из любого скрипта PowerShell. Достаточно выполнить команду:

Send-Telegram  "My test message"

Если в качестве основного вы используете Teams, мы также можете отправлять сообщения в канал Teams с помощью PowerShell.

Предыдущая статья Следующая статья


Комментариев: 9 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)