share facebook facebook2 twitter menu hatena pocket slack

2016.04.12 TUE

PowerShell 関連〜Slack の Incoming Webhook を叩いて PowerShell からメッセージを投稿する

川原 洋平

WRITTEN BY川原 洋平

tl;dr

Slack の Incoming Webhook を叩いて PowerShell からメッセージを投稿するメモ(参考にさせて頂いたページを写経な感じになっているが…)

参考

ありがとうございます。

メモ

事前に PowerShell が実行出来るようにしておく

20160221202749

ザクっと以下のような PowerShell スクリプトを…

slack.ps1 というファイル名で保存。

function slack_notification($message) {

  $payload = @{
     text = $message;
     username = "PowerShell User";
     icon_emoji = ":frog:"
  }

  ConvertTo-Json $notificationPayload
  Invoke-RestMethod `
    -Uri "https://hooks.slack.com/services/xxxxxxxxxxx/xxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxx" `
    -Method Post `
    -Body (ConvertTo-Json $payload)
}

slack_notification("Hello World")

curl の PowerShell 版 Invoke-RestMethod コマンドレットを利用する。また、ポストする JSON メッセージは以下のようにハッシュを生成して ConverTo-Json コマンドレットを利用して JSON 化する。

実行してみる

PS C:UsersAdministratorDocumentspowershell> powershell .slack.ps1
{
    "username":  "PowerShell User",
    "icon_emoji":  ":frog:",
    "text":  "Hello World"
}
ok
PS C:UsersAdministratorDocumentspowershell> powershell .slack.ps1
{
    "username":  "PowerShell User",
    "icon_emoji":  ":frog:",
    "text":  "Hello World"
}
ok
PS C:UsersAdministratorDocumentspowershell> powershell .slack.ps1
{
    "username":  "PowerShell User",
    "icon_emoji":  ":frog:",
    "text":  "Hello World"
}
ok

以下のように Slack にメッセージが届いている。

20160221205518

おけおけ。

以上

日本語のメッセージを飛ばすのはもちょっと工夫する必要がありそうなので追々。

元記事はこちら

PowerShell 関連〜Slack の Incoming Webhook を叩いて PowerShell からメッセージを投稿する