当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 从 PowerShell 脚本发送 Telegram 消息

作者:精品下载站 日期:2024-12-14 06:36:18 浏览:13 分类:玩电脑

从 PowerShell 脚本发送 Telegram 消息


您可以使用 Telegram Messenger 作为通知工具来获取有关各种基础设施事件、脚本执行结果或调度程序任务的即时报告。本文向您展示如何使用 PowerShell 通过 Bot API 向 Telegram 频道或组发送文本通知。

首先,使用以下命令创建一个新的 Telegram 机器人

@BotFather

。在 Telegram 客户端中找到它并向其发送以下命令:

/start
/newbot

指定机器人的名称和用户名。 BotFather 将生成一个 HTTP 令牌,您必须复制并保存该令牌。

[玩转系统] 从 PowerShell 脚本发送 Telegram 消息

要向 Telegram 聊天或特定用户发送消息,您需要知道他们的 ID。在这个例子中,我将向自己发送通知,所以使用

@my_id_bot

查找我的 Telegram ID:

/start
Your user ID: 987654321

要向任何 Telegram 聊天发送消息,您需要指定机器人令牌和目标用户(或聊天)的 ID:

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

连接到 Telegram API 需要 TLS 1.2 协议。确保在 Windows 中启用 TLS 1.2 协议版本。默认情况下,PowerShell 使用旧版 SSL 3.0、TLS 1.0 或 TLS 1.1 协议进行连接。运行以下命令以在当前 PowerShell 会话中使用 TLS 版本 1.2

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

这是向 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)"

运行该程序后,您应该会收到来自机器人的消息。

您可以使用表情符号和 HTML 文本格式使通知更具视觉吸引力和可读性:

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

[玩转系统] 从 PowerShell 脚本发送 Telegram 消息

要使用 PowerShell 脚本,我建议使用 VS Code 编辑器。

[玩转系统] 从 PowerShell 脚本发送 Telegram 消息

如果您通过代理服务器访问 Internet,则可以使用

-Proxy

Invoke-WebRequest cmdlet 的参数来指定代理设置。使用

-ProxyCredential

向代理进行身份验证的参数。

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

在版本 PowerShell Core 7.x+ 中,Invoke-WebRequest cmdlet 使用环境变量中指定的代理设置。了解有关在 PowerShell 中使用代理的更多信息。

[/警报]

您可以从向 Telegram 发送消息的脚本创建一个函数,并将其添加到 Windows 中的 PowerShell 配置文件中:

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

[玩转系统] 从 PowerShell 脚本发送 Telegram 消息

现在可以从任何 PowerShell 脚本向 Telegram 频道发送消息。

Send-Telegram "My test message"

如果您使用 Teams 作为主要信使,您还可以使用 PowerShell 将消息发送到 Teams 频道。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯