Odesílejte telegramové zprávy ze skriptu PowerShell

Svůj telegramový messenger můžete použít jako oznamovací nástroj k získání okamžitých zpráv o různých událostech infrastruktury, výsledcích provádění skriptů nebo úlohách plánovače. Tento článek ukazuje, jak pomocí prostředí PowerShell odeslat textové oznámení do kanálu telegramu nebo skupiny prostřednictvím rozhraní API robota.

Nejprve vytvořte nového telegramového robota pomocí@BotFather. Najděte jej ve svém telegramovém klientovi a odešlete mu následující příkazy:
/start
/newbot

Zadejte jméno a uživatelské jméno robota. BotFather vygeneruje HTTP token, který musíte zkopírovat a uložit.

Chcete-li odeslat zprávu do telegramového chatu nebo konkrétnímu uživateli, musíte znát jeho ID. V tomto příkladu budu posílat upozornění sám sobě, takže použijte@my_id_botnajít mé telegramové ID:

/start

Your user ID: 987654321

Chcete-li odeslat zprávu do jakéhokoli telegramového chatu, musíte zadat token bota a ID cílového uživatele (nebo chatu):

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

Pro připojení k Telegram API je vyžadován protokol TLS 1.2. Ujistěte se, že je v systému Windows povolena verze protokolu TLS 1.2. Ve výchozím nastavení používá PowerShell pro připojení starší protokoly SSL 3.0, TLS 1.0 nebo TLS 1.1. Chcete-li použít TLS verze 1.2 v aktuální relaci PowerShellu, spusťte následující příkaz

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

A zde je příkaz k odeslání zprávy do Telegramu:

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

Jakmile to spustíte, měli byste dostat zprávu od robota.

Můžete použít emotikony a formátování textu HTML, aby byla oznámení vizuálně přitažlivější a čitelnější:

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

Pro práci s PowerShell skripty doporučuji použít editor VS Code.

Další informace:Plánovač úloh pro spouštění skriptů PowerShell a e-mailových upozornění

Pokud přistupujete k internetu přes proxy server, můžete použít-Proxyparametr rutiny Invoke-WebRequest k určení nastavení serveru proxy. Použijte-ProxyCredentialargument pro ověření na proxy.

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

Ve verzi PowerShell Core 7.x+ používá rutina Invoke-WebRequest nastavení proxy zadané v proměnných prostředí. Přečtěte si další informace o používání proxy v PowerShellu.

[/alert]

Můžete vytvořit funkci ze skriptu, který odešle zprávu do telegramu a přidat ji do souboru profilu PowerShell ve 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    
 }

Otevřete textový soubor s profilem PowerShell, který se automaticky použije při spuštění powershell.exe/pwsh.exe:

notepad $PSHOMEProfile.ps1

Nyní je možné odeslat zprávu do kanálu telegramu z libovolného skriptu PowerShellu.

Send-Telegram "My test message"

Pokud používáte Teams jako primární messenger, můžete také použít PowerShell k odeslání zprávy do kanálu Teams.

Related Posts