ようへいの日々精進XP

よかろうもん

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

tl;dr

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


参考

ありがとうございます。


メモ

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

f:id:inokara:20160221202749p:plain

ザクっと以下のような 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")

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

実行してみる

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

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

f:id:inokara:20160221205518p:plain

おけおけ。


以上

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