powershell chatwork用 2.0系とそれ以上対応


Chatworkにメッセージ投げる関数

Invoke-WebRequest 使えない2系にも一応対応した。

やっつけでやってる部分も有るので、汚い所はスルーで。


## Chatwork用
$apitoken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
$roomid = "12345678"

$toAddress = "[To:XXXX] てすとさん"

$chatworkUri = "https://api.chatwork.com/v2/rooms/{0}/messages" -f $roomid


# chatwork通知
function SendChatworkMsg([string] $title, [string] $msg){
    # powershell 2.0 対応
    if($PSVersionTable.PSVersion.Major -ge 2){
        SendChatworkMsg_2 -title $title -msg $msg
        return  
    }
    $toAddress = setToMsg
    if(![string]::IsNullOrEmpty($toAddress)){
        $msg = $toAddress + "`n" + $msg
    }

    $r = Invoke-WebRequest -Uri $chatworkUri `
         -Method POST `
         -Body @{"body" = "[info][title]$title[/title]$msg[/info]"} `
         -Headers @{"X-ChatWorkToken" = $apitoken}

}

# PS 2.0向け
function SendChatworkMsg_2{ 
    param( 
         [string] $title, [string] $msg
    ) 

    $toAddress = setToMsg
    if(![string]::IsNullOrEmpty($toAddress)){
        $msg = $toAddress + "`n" + $msg
    }

    $fields=new-object System.Collections.Specialized.NameValueCollection 
    $fields.Add("body","[info][title]$title[/title]$msg[/info]") 

    $wc = new-object System.Net.WebClient 
    $wc.Headers.Add("X-ChatWorkToken",$apitoken) 


     Try{ 
          #$wc.UploadValues($chatworkUri, $fields) 
          $res = $wc.UploadValues($chatworkUri, "POST", $fields) 
          #Write-Host $res
     } 
     Catch{ 
          throw $_ #rethrow the exception 
     } 
} 

function setToMsg{
    return $toAddress
}


#TEST
#SendChatworkMsg "TEST" "MSG"
#SendChatworkMsg_2 "TEST" "MSG"