Enviar Mensajes de Telegram desde un Script de PowerShell
Enviar Mensajes de Telegram desde un Script de PowerShell

Enviar Mensajes de Telegram desde un Script de PowerShell

Puedes utilizar tu mensajero de Telegram como una herramienta de notificación para recibir informes instantáneos sobre diversos eventos de infraestructura, resultados de ejecución de scripts o tareas programadas.

Este artículo te muestra cómo usar PowerShell para enviar una notificación de texto a un canal o grupo de Telegram a través de la API de Bot.

Pasos para Enviar Mensajes de Telegram con PowerShell

Primero, crea un nuevo bot de Telegram usando @BotFather. Encuéntralo en tu cliente de Telegram y envíale los siguientes comandos:

/start
/newbot

Especifica el nombre de usuario y el nombre del bot. BotFather generará un token HTTP que debes copiar y guardar.

Creación de nuevo bot con BotFather
Creación de nuevo bot con BotFather

Para enviar un mensaje a un chat de Telegram o a un usuario específico, necesitas conocer su ID. En este ejemplo, enviaré notificaciones a mí mismo, así que usa @my_id_bot para encontrar mi ID de Telegram:

/start
Tu ID de usuario: YYYYYYYYY
Solicitar ID de usuario de Telegram
Solicitar ID de usuario de Telegram

También puedes obtener el ID de tu usuario de Telegram desde PowerShell. Ejecuta el siguiente comando y reemplaza tu token:

$tg_token="TU_BOT_TOKEN"
$Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$tg_token/getUpdates"
$Response.result.message.chat.id

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

$tg_token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" $tg_chat_id="YYYYYYYYY"

El protocolo TLS 1.2 es necesario para conectarse a la API de Telegram. Asegúrate de que la versión del protocolo TLS 1.2 esté habilitada en Windows. Por defecto, PowerShell utiliza los protocolos SSL 3.0, TLS 1.0 o TLS 1.1 para las conexiones. Ejecuta el siguiente comando para usar la versión TLS 1.2 en la sesión actual de PowerShell:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Usar la versión TLS 1.2 en PowerShell
Usar la versión TLS 1.2 en PowerShell
Y aquí tienes un comando para enviar un mensaje a Telegram:
$message="Mensaje de prueba de alerta desde PowerShell" $Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($tg_token)/sendMessage?chat_id=$($tg_chat_id)&text=$($Message)"

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

Mensaje recibido en Telegram desde PowerShell
Mensaje recibido en Telegram desde PowerShell

Es importante iniciar el bot (/start) previamente creado para que se establezca una comunicación.

Puedes usar emojis y formato de texto HTML para hacer las notificaciones más visualmente atractivas y legibles:

$message= $currend_data + "⚠️ Actualización EsGeeks <b>Nuevo_Post</b> ha sido publicado"
$Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($tg_token)/sendMessage?chat_id=$($tg_chat_id)&text=$($Message)&parse_mode=html"
Código Powershell para enviar mensaje a Telegram
Código Powershell para enviar mensaje a Telegram
Mensaje con emoji recibido en Telegram desde Powershell
Mensaje con emoji recibido en Telegram desde Powershell
Mensaje con emoji recibido en teléfono con Telegram
Mensaje con emoji recibido en teléfono con Telegram

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

Si estás accediendo a Internet a través de un servidor proxy, puedes utilizar el parámetro -Proxy del cmdlet Invoke-WebRequest para especificar la configuración del proxy. Usa el argumento -ProxyCredential para autenticarte en un proxy.

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

En la versión PowerShell Core 7.x+, el cmdlet Invoke-WebRequest utiliza la configuración del proxy especificada en las variables de entorno.

Puedes crear una función a partir de un script que envía un mensaje a Telegram y agregarla al archivo de perfil de PowerShell en Windows:

function Send-Telegram {
        [CmdletBinding()]
        param(
            [Parameter()]
            [string] $Message
        )    
        $tg_token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        $tg_chat_id="YYYYYYY"
        [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    
 }

Abre un archivo de texto con un perfil de PowerShell que se aplique 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 "Mi mensaje de prueba"

Si utilizas Teams como tu mensajero principal, también puedes usar PowerShell para enviar un mensaje a un canal de Teams (pronto).

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda