LoginSignup
3
3

More than 5 years have passed since last update.

PowerShellでHipChatにPost

Last updated at Posted at 2014-10-07

他の言語は追加せずに動かしたい、じゃあPowerShell

HipChatはAPIが判りやすいので、いろんなところからシステムの情報をPOSTしたりしたいのですが、Windowsの場合は、システムの制約上rubyやpythonといったスクリプト言語を追加しにくいことがあります。

今回は、PowerShellを使ってPOSTしてみることにしました。

HipChatのAPI DocumentサイトにもPowerShellのモジュールが掲載されています。

ただし、こちら、API v1を利用しているので、今回はv2のAPIを試してみました。

ソースコード

HipChatはAtlassian社のプロダクトなので、折角なのでBitbucketに上げることにしました。

実行時の注意点

  • PowerShellスクリプトの実行を許可しておくこと。
  • PowerShell v3が使えるようにしておくこと。
    • 一部コマンドレットが、v2では組み込まれていないものがあるため。
    • ConvertTo-Jsonというコマンド。
    • Windows Management Framework 3.0 から、環境にあったフレームワークをインストールすること。
    • フレームワーク追加の場合は、OS再起動が要るので注意。

利用方法

notify-hipchat.ps1は、モジュール化はしていないので、そのまま引き数を指定して実行するだけになります。環境によっては、プロキシの設定も必要になりますので、-proxy オプションで切り替えてみて下さい。

PS C:\Users\xxx> .\notify-hipchat.ps1 -color 'green' -messageText "(successful) Sample text." 
 -roomid xxx -apitoken YOUR_API_TOKEN

もう1つの方は、functionを作成、モジュール化してみました。
README.mdを参考にして、インポートの上で、同じ引数で実行できます。

C:\PS>Import-Module Import-Module .\Notify-HopChat.psm1
C:\PS>Notify-HipChat -apitoken YOUR_API_TOKEN -roomid NNN -messageText "(successful) Sample text."
  • オンプレ版のHipChatでも利用可能です。
  • room messageの読み取りは未だなので、そのうち用意したいです。

PowerShell おまけ

  • PowerShell version確認
    • $PSVersionTableで確認可能。
PS C:\Users\xxx> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      3.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18444
BuildVersion                   6.2.9200.16398
PSCompatibleVersions           {1.0, 2.0, 3.0}
PSRemotingProtocolVersion      2.2
  • PowerShellのバージョン切り替え

    • powershell.exe -v 2 (Version2.0へ切り替え)
  • モジュールを作成する時

    • xxx.ps1 ではなく、xxx.psm1 というファイル名にする。
  • モジュールにヘルプやusage (sample)を追加する

    • <#... #> でコメントしたブロックを用意。
    • .PARAMETER パラメータ名 で、その引数の説明を付加出来る。
    • .EXAMPLE で、利用例を載せることができる。
Get-Help モジュール名 -examples # .EXAMPLE の部分を出力
Get-Help モジュール名 -detailed # 詳細を出力

20141010追記

JSONでAPIを呼ぶならInvokeRestMethod

メッセージをPOSTするのにWebRequetを使っていますが、PowerShell3.0以降が前提ならInvokeRestMethodを使うほうがスッキリして判りやすいです。
サンプルのソースで、Room messageをGETする関数を追加して、こちらはInvokeRestMethodで記載しています。

のちほどPOSTするほうもInvokeRestMethodに修正予定。

3
3
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
3
3