PowerShell - 監控 RDS (Remote Desktop Service) 系統資源和 Session 數量



前言

簡單來說,最近必須要在地端資料中心內,透過 Windows Server 2019 建立 Microsoft RDS (Remote Desktop Service) 運作環境的需求。從下列的 RDS 架構圖來看,眼尖的朋友應該已經發現,這看起來並不像地端運作的 RDS 架構圖? 事實上,從 Windows Server 2016 版本之後,RDS 架構已經在 Azure 公有雲上快速建立且方便維護,因此可以從文件中看出是以說明 Azure 公有雲環境為主。


那麼,在地端資料中心內,將 RDS 架構建立完成後,需要一個簡單的監控機制,例如,需要觀看 50 台 RDSH (Remote Desktop Session Host) 的系統資源使用量,以及 RDCB (Remote Desktop Connection Broker) 的使用者 Session 連線數量。

在短時間沒有辦法快速整合其它監控工具的情況下,只能自己花點時間透過 PowerShell 去抓取了,所以本文筆記就出現了。😎 

下列是本文實作相關檔案的簡要說明:
  • Check_RDS_Resource_to_HTML.ps1: 本文實作的主體,會載入 RDSResources.psm1 成為 PowerShell Script Module,以及處理抓取 RDCB 內所有的使用者 Session 連線數量,和最後把監控數據轉換成 HTML 檔案。
  • RDSResources.psm1: 抓取指定的 Windows Server 的 CPU / Memory / Disk 系統資源使用量,也就是抓取本文中 RDCB, RDWeb, RDSH 角色主機的系統資源工作負載情況。值得注意的是 Module 檔案的附檔名,必須要是「.psm1」否則屆時會無法順利載入。
  • style.css: 最後把監控數據轉換成 HTML 檔案時,搭配 CSS 美化一下。



執行結果

下列便是執行 Check_RDS_Resource_to_HTML.ps1 之後得到的 HTML 檔案內容。在目前的 RDS 實作環境架構中,主要有 3 個 RDS Collections,首先抓取每個  RDS Collections 的使用者 Session 連線數量並加總,最後則是抓取擔任 RDCB、RDWeb、和 50 台 RDSH 角色主機,Windows Server 2019 的系統資源工作負載情況。




Check_RDS_Resource_to_HTML.ps1




RDSResources.psm1




style.css