Bar

PowerShell から Slack へメッセージを投稿する方法

タスク スケジューラに登録する処理はほとんどPowerShell で書いています。
今までは正常処理、エラーともにメールで通知していましたが、最近はSlackに通知するようにしました。
今回は、PowerShell からSlackへ投稿する方法をメモ。

PowerShell からSlackへ投稿するサンプル スクリプト

function Send-Slack{
    param(
        [Parameter(Mandatory,Position=1)]
        [string]$message,

        [Parameter(Mandatory,Position=2)]
        [string]$webhookUrl
    )

    # 日本語エンコード用
    $encode = [System.Text.Encoding]::GetEncoding('ISO-8859-1')
    $utf8Bytes = [System.Text.Encoding]::UTF8.GetBytes($message)

    # Jsonに変換する
    $payload = @{ 
        text = $encode.GetString($utf8Bytes);

        # SlackのWebHookでBOT名とアイコンを指定している場合は下記スクリプトは不要
        #username = "PowerShell BOT";
        #icon_url = "https://xxxx/xxx.png";
    }

    # SlackのREST APIをたたく
    Invoke-RestMethod -Uri $webhookUrl -Method Post -Body (ConvertTo-Json $payload)
}

# テスト
$url = "https://hooks.slack.com/services/xxxxx/xxxxx/xxxxxxxxxx"
Send-Slack -message "テストでーす" -webhookUrl $url

投稿結果