Búsqueda de sitios web

Enviar mensajes de Telegram desde un script de PowerShell


Puede utilizar su Telegram Messenger como herramienta de notificación para obtener informes instantáneos sobre diversos eventos de infraestructura, resultados de ejecución de scripts o tareas del programador. Este artículo le muestra cómo usar PowerShell para enviar una notificación de texto a un canal o grupo de Telegram a través de Bot API.

Primero, crea un nuevo bot de Telegram usando

@BotFather

. Encuéntralo en tu cliente de Telegram y envíale los siguientes comandos:

/start
/newbot

Especifique el nombre y el nombre de usuario del bot. BotFather generará un token HTTP que deberás copiar y guardar.

Para enviar un mensaje a un chat de Telegram o a un usuario específico, es necesario conocer su ID. En este ejemplo, me enviaré notificaciones a mí mismo, así que use

@my_id_bot

para encontrar mi ID de Telegram:

/start
Your user ID: 987654321

Para enviar un mensaje a cualquier chat de Telegram, debe especificar el token del bot y la ID del usuario objetivo (o chat):

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

Se requiere el protocolo TLS 1.2 para conectarse a la API de Telegram. Asegúrese de que la versión del protocolo TLS 1.2 esté habilitada en Windows. De forma predeterminada, PowerShell utiliza los protocolos SSL 3.0, TLS 1.0 o TLS 1.1 heredados para las conexiones. Ejecute el siguiente comando para usar TLS versión 1.2 en la sesión actual de PowerShell

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

Y aquí hay un comando para enviar un mensaje a Telegram:

$message="Test message alert from PowerShell"
$Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($tg_token)/sendMessage?chat_id=$($tg_chat_id)&text=$($Message)"

Una vez que lo ejecutes, deberías recibir un mensaje del bot.

Puede utilizar formato de texto emoji y HTML para que las notificaciones sean más atractivas y legibles visualmente:

$message= $currend_data + "⚠️ Update Script <b>SAP_DB_Update</b> completed with errors"
$Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($tg_token)/sendMessage?chat_id=$($tg_chat_id)&text=$($Message)&parse_mode=html"

Para trabajar con scripts de PowerShell, recomiendo utilizar el editor de VS Code.

Si accede a Internet a través de un servidor proxy, puede utilizar el

-Proxy

parámetro del cmdlet Invoke-WebRequest para especificar la configuración del proxy. Utilizar el

-ProxyCredential

Argumento para autenticarse ante un proxy.

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

En la versión PowerShell Core 7.x+, el cmdlet Invoke-WebRequest usa la configuración de proxy especificada en las variables de entorno. Obtenga más información sobre el uso de un proxy en PowerShell.

[/alerta]

Puedes crear una función a partir de un script que envía un mensaje a Telegram y agregarlo al archivo de perfil de PowerShell en 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    
 }

Abra un archivo de texto con un perfil de PowerShell que se aplica automáticamente cuando se inicia powershell.exe/pwsh.exe:

notepad $PSHOME\Profile.ps1

Ahora es posible enviar un mensaje a un canal de Telegram desde cualquier script de PowerShell.

Send-Telegram "My test message"

Si usa Teams como su mensajero principal, también puede usar PowerShell para enviar un mensaje a un canal de Teams.

Artículos relacionados