有沒有一種方法可以以程式設計方式收集過去 30 天內或兩個日期之間登入 Windows 伺服器(特別是 2008 R2)的使用者清單?有 2 台 Active Directory 伺服器,所有使用者都是相同網域的成員。
我的最終目標是出於 SPLA 的原因自動取得每個伺服器的唯一使用者清單。
答案1
這是手動的,而不是通過程序,但您可以在事件檢視器中建立一個過濾器,僅顯示您的登入事件。右鍵單擊該Custom Views
資料夾並選擇Create Custom View
選項。不幸的是,對於此過濾器,您必須編輯 XML。過濾器的 XML 如下圖所示:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4624)]]
and
*[EventData[Data[@Name='LogonType'] and (Data='2' or Data='10' or Data='11')]]
</Select>
<Suppress Path="Security">
*[EventData[Data[@Name='TargetDomainName'] and (Data = 'Window Manager')]]
</Suppress>
</Query>
</QueryList>
您可能需要對其進行編輯以將登入類型 7 也包括在內(解鎖鎖定的會話)。有關登入類型代碼的更多信息,請參見此處:
http://www.windowsecurity.com/articles-tutorials/misc_network_security/Logon-Types.html
請注意,這不會按日期範圍進行過濾:僅按登入。但是,一旦縮小了該部分的範圍,就可以輕鬆手動瀏覽事件檢視器中的日期範圍。
不幸的是,當我使用“連接到另一台電腦”選項時,即使防火牆關閉,此過濾器也不起作用。
答案2
沒有簡單的方法。首先想到的是梳理安全日誌。您正在尋找事件 ID 4624。
根據安全日誌條目產生的速度以及日誌的大小,日誌可能會在 30 天的週期之前被覆蓋。
最好強制執行一個登入腳本來對中心位置進行計數。