利用 MS OMS 來追蹤 PowerShell 活動

概要: 學習如何將 PowerShell 活動記錄加入 MSOMS 中,並學習如何搜尋收集到的記錄。

根據預設,Windows PowerShell 會將活動記錄到多個不同的 log 中。例如:以下範例中有一個 Windows PowerShell log 會提供 Windows PowerShell 引擎和供應者生命週期的資訊。如下圖:

此外,還有 Windows PowerShell 管理與操作 log 和 Desired State Configuration (DSC) log。因此可以發現它是一個記錄完善的應用程式。在多數的目的中,Windows PowerShell log 能提供良好的診斷資訊,而這在有問題需要研究時能有很大的幫助。

Windows PowerShell/Operational log 會在 Windows PowerShell 指令執行時記錄。如下圖:
Details 的 tab 中,您可以看到執行的指令名稱和執行指令的使用者。從上圖可以看到 Task Category是 PowerShell ISE Operation,因此可以得知指令是在整合式指令碼環境(ISE) 的內部交互執行。而這些資訊都是從 Event ID 24577 中所得知。

那我是否能在 OMS 中執行呢?當然可以。

首先選擇要攝入 OMS 的 log

在 OMS 工作區中,點選 設定>Data>Windows 事件記錄檔,在 Collect events from the following logs 欄位中輸入 PowerShell,如下圖:
輸入 PowerShell 後,在列表中選擇 Microsoft-Windows-PowerShell/Operational log。接著按下 [+] 來新增此 log。現在便能選擇  Error / Warning 或 Informational

記錄搜尋與執行指令

以下範例的搜尋指令非常簡單,利用 Type=Event 指令加上 Event ID 24577 來回傳想看到的 PowerShell 指令資訊。搜尋指令與結果如下:

Type=Event EventID=24577


搜尋結果顯示出只有一個使用者在單一一台電腦上執行了兩個指令。其中一個指令是在約中午時執行的,其名為 Start-CloudServiceVMsCustom.ps1,而另一個則是在約 7 小時候被執行,其名為 CloudServiceVMsCustom.ps1。此結果確實符合邏輯。