天天看點

PowerShell小技巧:通過Powershell 發送消息給企業微信機器人

背景

在工作中經常會使用計劃任務執行 Powershell 腳本,同時又需要基于執行的腳本及時回報結果給相關人員。過去是通過 Powershell 發送郵件通知,但很多時候這類消息容易被忽略,沒有及時溝通類的消息軟體高效。

本篇以

企業微信機器人

為例,簡單記錄使用 Powershell 發送消息給企業微信機器人,便于後期內建在其他腳本中,以實作及時回報運作結果的需求。如何建立機器人不在本文範圍,請自行搜尋。

實作方式

$Webhook = "https://qyapi.weixin.qq.com/xxx" # 這裡填寫機器人的Webhook 位址即可
Invoke-WebRequest $Webhook -Method POST -ContentType "application/json;charset=utf-8" -Body '{"msgtype": "text","text": {"content": "【測試企業微信機器人消息】"}}'
           

效果預覽

PowerShell小技巧:通過Powershell 發送消息給企業微信機器人
PowerShell小技巧:通過Powershell 發送消息給企業微信機器人

實戰

這裡有個簡單的場景,預設計算機加域以後都會在

Computers

這個容器裡,如果不移動至相應的 OU,則無法應用企業的相關GPO政策。我們可以定期執行腳本去檢查 Computers 的計算機,如果有就通知相關人員進行移動。

腳本如下:

# Send message
$webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=*********"
$PClist = Get-ADComputer -SearchBase "CN=Computers,DC=ITPro,DC=cc"  -Filter 'Enabled -eq "True"' | Select-Object Name
$PCNames = $PClist.Name
$PCNumb = ($PClist.Name).count
$content = Write-Output "一共有"$PCNumb"台計算機加入域請盡快移動至相關OU,清單如下:`n "$PCNames""

$body = "{
    `"msgtype`":`"text`",
    `"text`":{
    `"content`":`"$content`",
    `"mentioned_list`":[`"jason`"]
    }
}"
$chinese = [System.Text.Encoding]::UTF8.GetBytes($body) #這裡是解決中文編碼問題的即發送中文消息時候使用。
if ($PCNumb -gt 0) {
    Invoke-RestMethod $webhook -ContentType "application/json" -Method Post  -Body $chinese
}
else {
    exit
}
           

執行結果:

PowerShell小技巧:通過Powershell 發送消息給企業微信機器人

機器人消息也支援

MarkDown

格式,讓輸出的消息更加美觀

繼續閱讀