Help us understand the problem. What is going on with this article?

PowerShellからSlackに通知する方法

More than 3 years have passed since last update.

(16/07/29追記)
当記事のスクリプトでは「煩」など一部の文字が「BAD+7…BAD+A9」のように化けて投稿されるので、当記事にリンクして頂いているこちらの記事のスクリプトの利用をお勧めします。
ログオン・ログオフ時にPowerShellを起動しSlackへ通知する【Windows7】


追加のソフトインストール無しでWindowsからSlackに通知が送れます。
要になるPowerShellのInvoke-RestMethodはWindows8、Windows Server 2012以降(PowerShell 3.0以降)で利用できます。

SlackのWebhook設定

Slackで投稿したいチャンネルのIncoming WebHooksを設定しておきます。
チャンネルのメニューから、Add a service integration > Incoming WebHooks を追加し、表示されたWebhook URLをメモしておきます。

PowerShellの実行許可

標準ではPowerShellスクリプトの実行が禁止されているので
管理者権限でPowerShellを起動してローカルのスクリプトを実行可能に設定します。

powershell
# 現在の設定を確認
PS > powershell Get-ExecutionPolicy
Restricted

# 設定を変更
PS > powershell Set-ExecutionPolicy RemoteSigned

# 設定を確認
PS > powershell Get-ExecutionPolicy
RemoteSigned

通知用PowerShellスクリプト

引数に渡された文字列をSlackに通知するスクリプトを用意します。UTF8に変換するので日本語もOKです。

$notificationPayloadのusernameとicon_urlは好みで設定してください。
Invoke-RestMethod -Uri にSlackで取得したWebhook URLを設定します。

notify_to_slack.ps1
$enc = [System.Text.Encoding]::GetEncoding('ISO-8859-1')
$utf8Bytes = [System.Text.Encoding]::UTF8.GetBytes($args)

$notificationPayload = @{ 
    text = $enc.GetString($utf8Bytes);
    username = "PowerShell BOT"; 
    icon_url = "https://dl.dropboxusercontent.com/u/1518975/metro-powershell-logo.png"
}

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

バッチファイルからPowerShellスクリプトを呼び出す

バッチファイルからPowerShellスクリプトを呼び出します。

notify.bat
powershell /c notify_to_slack.ps1 "Hello Slack! こんにちは!"

参考サイト

mikage014
インフラ系エンジニア、CakePHPプログラマーを経て、現在は宅配もできるエンジニアとして修行中。最近はRails、Arduinoにお熱。Monacaも触っています。自宅サーバーもあるよ。
http://d.hatena.ne.jp/mikage014/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした