簡體   English   中英

Get-WinEvent通過Powershell遠程處理

[英]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登錄會話中,令牌中有以下組:

  • BUILTIN \\遠程桌面用戶
  • NT AUTHORITY \\ REMOTE INTERACTIVE LOGON

而在遙遠的一個,有

  • 控制台登錄

這可以解釋權利的差異......

編輯:從注冊表,看起來任務調度程序日志不知何故是系統日志的一部分。 根據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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM