Envoyer des messages Telegram à partir d'un script PowerShell

Vous pouvez utiliser votre messagerie Telegram comme outil de notification pour obtenir des rapports instantanés sur divers événements d'infrastructure, les résultats d'exécution de scripts ou les tâches du planificateur. Cet article vous montre comment utiliser PowerShell pour envoyer une notification texte à un canal ou à un groupe Telegram via l'API Bot.

Tout d’abord, créez un nouveau bot Telegram en utilisant@BotFather. Trouvez-le dans votre client Telegram et envoyez-lui les commandes suivantes :
/start
/newbot

Spécifiez le nom et le nom d'utilisateur du bot. BotFather générera un jeton HTTP que vous devrez copier et enregistrer.

Pour envoyer un message à un chat Telegram ou à un utilisateur spécifique, vous devez connaître son identifiant. Dans cet exemple, je m'enverrai des notifications, alors utilisez@my_id_botpour trouver mon identifiant Telegram :

/start

Your user ID: 987654321

Pour envoyer un message à n'importe quel chat Telegram, vous devez spécifier le jeton du bot et l'ID de l'utilisateur cible (ou du chat) :

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

Le protocole TLS 1.2 est requis pour se connecter à l'API Telegram. Assurez-vous que la version du protocole TLS 1.2 est activée dans Windows. Par défaut, PowerShell utilise les anciens protocoles SSL 3.0, TLS 1.0 ou TLS 1.1 pour les connexions. Exécutez la commande suivante pour utiliser TLS version 1.2 dans la session PowerShell actuelle

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

Et voici une commande pour envoyer un message à 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)"

Une fois que vous avez exécuté celui-ci, vous devriez recevoir un message du bot.

Vous pouvez utiliser le formatage du texte emoji et HTML pour rendre les notifications plus attrayantes et plus lisibles :

$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"

Pour travailler avec des scripts PowerShell, je recommande d'utiliser l'éditeur VS Code.

Apprendre encore plus:Planificateur de tâches pour exécuter des scripts PowerShell et des alertes par e-mail

Si vous accédez à Internet via un serveur proxy, vous pouvez utiliser le-Proxyparamètre de la cmdlet Invoke-WebRequest pour spécifier les paramètres de proxy. Utilisez le-ProxyCredentialargument pour s’authentifier auprès d’un proxy.

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

Dans la version PowerShell Core 7.x+, la cmdlet Invoke-WebRequest utilise les paramètres de proxy spécifiés dans les variables d'environnement. En savoir plus sur l’utilisation d’un proxy dans PowerShell.

[/alerte]

Vous pouvez créer une fonction à partir d'un script qui envoie un message à Telegram et l'ajouter au fichier de profil PowerShell sous 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    
 }

Ouvrez un fichier texte avec un profil PowerShell qui est automatiquement appliqué au démarrage de powershell.exe/pwsh.exe :

notepad $PSHOMEProfile.ps1

Il est désormais possible d'envoyer un message vers une chaîne Telegram à partir de n'importe quel script PowerShell.

Send-Telegram "My test message"

Si vous utilisez Teams comme messager principal, vous pouvez également utiliser PowerShell pour envoyer un message à un canal Teams.

Related Posts