[英]Get-WinEvent via Powershell remoting
我有一個非管理員訪問服務器。 我被允許通過RDP連接,並使用PowerShell遠程處理。 當我從RDP會話調用以下PowerShell命令時:
Get-WinEvent -MaxEvents 100 -Provider Microsoft-Windows-TaskScheduler
正如預期的那樣,我得到100條記錄。
當我通過PowerShell遠程處理執行相同操作時,通過從本地計算機調用以下內容:
invoke-command -ComputerName myserver {Get-WinEvent -MaxEvents 100 -Provider Microsoft-Windows-TaskScheduler }
我收到一個錯誤:
未找到符合指定選擇條件的事件。
- CategoryInfo:ObjectNotFound:(:) [Get-WinEvent],Exception
- FullyQualifiedErrorId:NoMatchingEventsFound,Microsoft.PowerShell.Commands.GetWinEventCommand
知道為什么嗎? 遠程PowerShell會話應該在相同的憑據下運行,對嗎?
編輯: whoami
確實顯示了RDP登錄和PowerShell遠程處理之間的安全上下文 - 組集是不同的。 在RDP登錄會話中,令牌中有以下組:
而在遙遠的一個,有
這可以解釋權利的差異......
編輯:從注冊表,看起來任務調度程序日志不知何故是系統日志的一部分。 根據MS知識庫文章Q323076 ,可以在HKLM\\SYSTEM\\CurrentControlSet\\Services\\EventLog\\System
下找到系統日志的安全描述符,值為CustomSD
。 我無法檢查有問題的服務器,但在我是管理員的另一台服務器上,該密鑰下沒有CustomSD。 在HKLM\\SYSTEM\\CurrentControlSet\\Services\\EventLog\\System\\Microsoft-Windows-TaskScheduler
,兩者都沒有。 只有安全日志才能獲得CustomSD。 接下來的問題是,默認SD在哪里?
C:\\Windows\\System32\\winevt\\LogsMicrosoft-Windows-TaskScheduler%4Operational.evtx
上的實際日志文件的權限無關緊要,無論如何,訪問都是由EventLog服務調解的。
如果您不是遠程計算機的管理員,並且invoke-command -ComputerName myserver {whoami /all}
告訴您您是誰。
您需要成為遠程計算機上的Event Log Reader組的一部分。
以及遠程管理用戶組,我相信您已經是。
如果您需要閱讀安全日志,您還需要在本地安全策略 - >安全設置 - >本地策略 - >用戶權限分配下管理審核和安全日志
根據Windows事件日志@ MSDN博客上的默認ACL,在Windows Server 2003+中,系統日志的默認ACL為:
O:BAG:SYD:
*(D;;0xf0007;;;AN) // (Deny) Anonymous:All Access
*(D;;0xf0007;;;BG) // (Deny) Guests:All Access
(A;;0xf0007;;;SY) // LocalSystem:Full
(A;;0x7;;;BA) // Administrators:Read,Write,Clear
(A;;0x5;;;SO) // Server Operators:Read,Clear
(A;;0x1;;;IU) // INTERACTIVE LOGON:Read <===================
(A;;0x1;;;SU) // SERVICES LOGON:Read
(A;;0x1;;;S-1-5-3) // BATCH LOGON:Read
(A;;0x2;;;LS) // LocalService:Write
(A;;0x2;;;NS) // NetworkService:Write
NT AUTHORITY \\ INTERACTIVE LOGON是否包含RDP登錄? 我發現了一條論壇消息,但我最好找到一份這樣的文件......
文章聲稱這個ACE“直接源於源代碼”。 所以它在服務中是硬編碼的,有機會通過注冊表進行更改。
您需要本地管理員權限才能打開PowerShell會話。
但是這里有一個解決方法/替代方案:
https://4sysops.com/archives/powershell-remoting-without-administrator-rights/
我有這個問題最奇怪的變化,讓我瘋了!
從服務器W2008r2(以域管理員身份登錄,在交互式PowerShell會話中)遠程連接到工作站Win7以獲取登錄/注銷事件:
invoke-command -computername $pc {Get-WinEvent -FilterHashtable @{logname='
Security';Id=@(4624,4634)}}
-> No events were found that match the specified selection criteria.
但是在Get-Winevent之前在scriptblock中輸出空字符串時它確實有效:
invoke-command -computername $pc {"";Get-WinEvent -FilterHashtable @{lognam
e='Security';Id=@(4624,4634)}}
TimeCreated ProviderName Id Message PSComputerName
----------- ------------ -- ------- --------------
19/03/2018 11:51:41 Microsoft-Windows-Se... 4624 An account was succe... b25_x64
19/03/2018 11:51:41 Microsoft-Windows-Se... 4624 An account was succe... b25_x64
在嘗試了所有內容之后偶然發現了這個問題:Enter-Pssession,New-Pssession,使用-credential參數將預定義的憑證傳遞給invoke-command,以獲取wine-to兩者。 沒有任何效果,在每個組合中都給出了“沒有事件......”。
然后我在scriptblock中插入了一個$ cred來顯示傳遞的憑據以進行調試,突然間我得到了我正在尋找的事件......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.