我拥有对服务器的非管理员权限。我允许通过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登录会话中,令牌中有以下组:
在遥远的时候,那里有
这可以解释权利的差异......
编辑:从注册表中,看起来任务调度程序日志不知何故是系统日志的一部分。根据{{3}},可以在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服务调解的。
答案 0 :(得分:2)
如果您不是远程计算机的管理员,invoke-command -ComputerName myserver {whoami /all}
告诉您预期的人。
您需要成为远程计算机上事件日志阅读器组的一部分。
以及远程管理用户组,我相信您已经是。
如果您需要阅读安全日志,则还需要本地安全策略下的管理审核和安全日志 - >安全设置 - >本地政策 - >用户权利分配
答案 1 :(得分:0)
根据Default ACLs on Windows Event Logs @ MSDN blog,在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“直接源于源代码”。所以它在服务中是硬编码的,有机会通过注册表进行更改。
答案 2 :(得分:0)
您需要本地管理员权限才能打开PowerShell会话。
但是这里有一个解决方法/替代方案:
https://4sysops.com/archives/powershell-remoting-without-administrator-rights/
答案 3 :(得分:0)
我有这个问题最奇怪的变化,让我疯了! 从服务器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,以及两者。什么都没有用,给了#34;没有事件......&#34;在每一个组合中。
然后我在scriptblock中插入了一个$ cred来显示传递的凭证以进行调试,突然间我得到了我正在寻找的事件......