PowerShell收集服務器日檢報告,併發郵件給指定人員

如下博文在其餘博客處轉載,原文地址見下面網址:用 PowerShell 收集服務器日檢報告,併發郵件給管理員http://hubuxcg.blog.51cto.com/2559426/1604582做爲服務器管理員,平常工做包括常常檢查各個服務器硬盤使用狀況、內存、 CPU、服務、事件日誌等。html


若是沒有沒有藉助第 SCOM/zabbix/Host Monitor 等高大上的服務或工具,每天手工去一臺一臺服務器查看,也是比較費時、費事的一件事!
前端


用 PowerShell,收集某臺服務器的狀態信息,生成.html 文件,併發郵件通知給指的人員,原文件以下,有興趣的能夠直接去找原創來進行客制。
shell

https://gallery.technet.microsoft.com/scriptcenter/GetGeneralSystemReportps1-4d9b5817windows


https://www.simple-talk.com/sysadmin/powershell/building-a-dailysystems-report-email-with-powershell/api


現通過小小修改,將生成的報告內容漢化,並修改成批量收集多臺服務器檢查報告。
服務器


使用方法:網絡

    一、下載附件腳本,修改腳本中如下內容:
併發


      1.1 若是隻須要生產.html 報告,不須要收郵件,能夠跳過此步,若是須要收郵件,請修改 SMTP 服務器地址、發件人、收件人郵箱,以及副本收件人郵箱,並將發送郵件啓用。ide

[String]$EmailRelay = "relay.rightdo.net",工具

[String]$EmailSender='administrator@rightdo.net',[String]$EmailRecipient='ping.zhou@rightdo.net',

[Bool]$SendMail=$True,

false,爲不發送郵件,True 爲發送郵件


wKioL1aphkehz6GuAAD4S0iFziQ386.png

CC = 185426445@qq.com

[注:發送到外域郵箱咱們需開通 exchange 服務器匿名中繼權限,咱們先實現發送給內部郵箱,文章末尾部分咱們在講如何開啓 Exchange 匿名中繼]

若是須要,請將前面的「#」 去掉,並修改成你須要的郵件地址

wKioL1aphzPyswAgAACPbxl8GeM556.png

1.2修改須要查詢事件日誌和佔用內存最多的進程信息。默認是最後 3 個系統和應用程序日誌中顯示爲警告或錯誤的日誌信息,內存佔用最多的前 10 個進程信息。能夠依自已須要作調整。

## Environment Specific - Change These ##

$EventNum = 3 # Number of events to fetch for system report

$ProccessNumToFetch = 10 # Number of processes to fetch forsystem report

wKiom1aph4zyyNg3AACImFOy7BE974.png

1.3在存放此 PS 文件同一目錄下,建立一個 Serverlist.txt 文件,將須要收集的服務器名填到此文件中,一行一個服務器的主機名,如:

vmshdc01.rightdo.net

exshsv01.rightdo.net

lyncshsv01.rightdo.net

wKioL1apiH_Ts8PrAABOs_bXdgU387.png

二、在 PowerShell 中測試若是腳本不能執行,請修改腳本執行策略:

wKioL1apiMqiqfe6AAEbqAgqN6g412.png

三、建立計劃任務,讓腳本自動在指定時間運行!

步驟 一、控制面板-全部控制面板項-管理工具-任務計劃程序

wKioL1apiS3Rjj08AAFBryzc2y8891.png

步驟 二、建立基本任務…

wKioL1apiW2g_D0TAAFRqmRxHAg644.png

步驟 三、填寫名稱,下一步

wKiom1apiXfBwJMIAADyP1ge-7M874.png

步驟 四、根據需求設置任務運行的時間與次數,下一步繼續

wKiom1apicPDnuNHAACr18Jkigw246.png

步驟 五、定義好天天執行任務的時間,繼續下一步

wKioL1apikSAygHmAAC3vhv7VBQ400.png

步驟 六、啓動程序,下一步繼續

wKioL1apinjwF094AADZyf24H2Q777.png

步驟 七、程序或腳本處輸入powershell -file "C:\Get-GeneralSystemReport_Network_51cto.ps1"

wKiom1apipfDbebDAAD5NDijxW0811.png

步驟 八、選擇是,下一步繼續

wKioL1apizaj32cWAAEpfgUvRJI379.png

步驟 九、完成

wKiom1apiyzhMkfXAACyN04HiS8119.png

步驟 十、 選擇無論用戶是否登錄都要運行

wKioL1api8DywUKnAACmCuxNKB8780.png

執行後生成的.html 報告以下:

wKiom1api63CB_a7AABHt3M9VFs683.png

若是啓用郵件功能,收到的郵件內容以下:

wKiom1api--QC3DTAABQ7eQggps231.png


        說明:此方法使用於域環境下,以域管理員或是擁有全部服務器管理員權的帳號登陸到某臺服務器執行此腳本。若是爲執行腳本的時登陸的帳號沒有對應服務器的管理員權限,將沒法執行。若是每臺服務器的權限分散,沒有管理員權限,則建議將腳本分析放在各臺服務器上,而後在各服務器上去執行腳本或是設置計劃任務。


下面咱們接着講下匿名中繼如何設置:

因爲咱們 Powershell 腳本採用的 SMTP 調用的方式是匿名調用,包括向內外發送郵件,若是不採用匿名發送,則有可能沒法發送郵件到外部。咱們最好不要在默認的接受鏈接器中設定匿名訪問,所以咱們須要設定新的接受鏈接器並接受匿名訪問。因此咱們按照相應步驟來設定,咱們要創建接受鏈接器。


步驟 一、 首先登錄 EX 服務器打開 EAC 管理網頁,導航到郵件流-接收鏈接器:

wKiom1apjLLAew-kAABHLH80Qw8458.png

步驟 二、 新建接收鏈接器,名稱-relay,角色-前端傳輸,類型-內部

wKioL1apjonzN-M4AAA418Bvn-w562.png

步驟 三、 編輯遠程網絡設置,IP 段設置爲內部網段 10.10.10.1-10.10.10.254

wKioL1apjpvzYWfnAABnXfpPyS4898.png

wKioL1apjpujAcbYAABH-TRIbQU656.png



步驟 四、身份驗證選擇基本認證、集成 windows 認證權限組選擇 Exchange 服務器、舊版 Exchange 服務器、 Exchange 用戶、匿名用戶

wKiom1apjmihxWD0AAArdT76e6o729.png

步驟 五、 FQDN:relay.rightdo.net,新建一條 relay.rightdo.net 的 A 記錄

wKiom1apjnziJ4bbAAA_kUuIiiA547.png

wKiom1apjn2yYv_qAACNrtS_VwY281.png


步驟 六、 咱們要把當前的這個接收鏈接器設置爲匿名能夠 Relay,須要使用Powershell 腳本,Powellshell 腳本內容以下:

[PS] C:\Windows\system32>Get-ReceiveConnector "relay" | AddADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"

wKioL1apjtSS1x-sAAAxWreFhFg058.png

步驟 七、 到此爲止,咱們的匿名 Relay 已經設置完成,若是存在多個服務器均須要使用 SMTP RELAY 則須要每一個服務器均進行相同的設置:咱們接下來進行一個測試,測試匿名 RELAY 到外部機器來發送郵件,通過測試,發現徹底能夠 Relay 任何域名的郵件:

wKiom1apjpjCkm_8AABvZq5CSP8302.png

步驟 八、設置好匿名中繼後,測試下,發現咱們的外網 QQ 郵箱也收到了服務器報告。

wKioL1apjuqTcrsHAACmx5sIoXY563.png

相關文章
相關標籤/搜索