通过Powershell远程访问Get-WinEvent
我有一个非管理员访问服务器。我被允许通过RDP连接,并使用PowerShell远程处理。当我从RDP会话调用以下PowerShell命令时:通过Powershell远程访问Get-WinEvent
Get-WinEvent -MaxEvents 100 -Provider Microsoft-Windows-TaskScheduler
我按预期得到100条记录。
当我做同样通过PowerShell远程处理,通过调用我的本地机器如下:
invoke-command -ComputerName myserver {Get-WinEvent -MaxEvents 100 -Provider Microsoft-Windows-TaskScheduler }
我得到一个错误:
No events were found that match the specified selection criteria.
- CategoryInfo : ObjectNotFound: (:) [Get-WinEvent], Exception
- FullyQualifiedErrorId : NoMatchingEventsFound,Microsoft.PowerShell.Commands.GetWinEventCommand
任何想法,为什么?远程PowerShell会话应该在相同的凭据下运行,对吧?
编辑:whoami
确实显示RDP登录和PowerShell远程处理之间的安全上下文的差异 - 组集是不同的。在RDP登录会话,有令牌中的以下组:
- BUILTIN \远程桌面用户
- NT AUTHORITY \远程交互式登录
而在远程的一个,有
- 控制台登录
这腠ld帐户的权利的差异...
编辑:从注册表中,它看起来像任务调度程序日志不知何故是系统日志的一部分。根据MS KB article 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}
告诉您是您期望的人。
您将需要成为远程计算机上的事件日志读取器组的一部分。
以及远程管理用户组,我相信你已经是。
如果你需要阅读的安全日志,您还需要管理审核和安全日志下本地安全策略 - >安全设置 - >本地策略 - >用户权利指派
Whoami确认我作为我的主帐户连接,没有惊喜:)我可以通过RDP连接到相同的帐户时读取日志很好。为什么我的远程PowerShell会话的安全上下文与RDP登录有什么不同? –
好问题,我能够重现这种情况。作为本地用户,在计算机上登录,除非明确拒绝,否则您具有对事件日志的读/写访问权限(不是创建/删除)。但是,我怀疑这种访问不能远程扩展,尝试在远程PC上加载事件日志,并且访问级别都会失败,访问被拒绝。另一方面,您只需要成为“事件日志读取器”和“远程管理用户”组的一部分,以便能够远程读取日志,不需要本地用户访问,但这不会为您提供写入权限。 –
与使用远程事件日志服务相反,日志读取cmdlet是否作为目标计算机上的本地进程运行?整个想法是使用powershell remoting作为网络传输,以便应用本地权限,而不是事件日志自己的网络传输。另外,从技术上讲,RDP也很遥远。这就是“R”代表:) –
据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来源于“直接从源代码”。所以它在服务中是硬编码的,有机会通过注册表进行更改。
您需要本地管理员权限才能打开PowerShell会话。
但是有一个解决方法/备选位置:
https://4sysops.com/archives/powershell-remoting-without-administrator-rights/
这指定服务器在那里我有管理员PRIVS命令时,我的作品...... –
我也有运行这两个命令,没有问题。你使用的是什么版本的PowerShell?调用时运行的任何get-WinEvent命令是否工作? – smwk
远程处理?它不,甚至没有针对应用程序日志。看起来粘滞点是nonadmin ... –