36
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PowerShellからSlackに通知する方法

Last updated at Posted at 2015-04-30

(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! こんにちは!"

参考サイト

36
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?