PowerShell:如何完整显示?

yuvru6vn  于 2022-11-10  发布在  Shell
关注(0)|答案(2)|浏览(594)

我尝试在PS中运行以下命令:

Get-EventLog -LogName Security | findstr 4720

我得到的结果似乎被压扁了,好像需要调整列宽一样。如何查看省略号(...)后面的所有文本?查看屏幕截图:https://i.imgur.com/fqV5qIs.png
如何查看返回的完整信息?

syqv5f0l

syqv5f0l1#

正如圣地亚哥提到的,您可以使用Format-Table
尽管它看起来像是在寻找特定的事件ID,但我建议不要使用findstr(它可能会返回无关的结果,因为它在搜索结果中的任何位置都会搜索‘4720’--当然,除非这是您的意图),而是使用Where-Object cmdlet(或其别名?)来定位该属性。另外,如果你想要一个“纯粹的”PowerShell解决方案,我建议你使用Select-String而不是findstr
例如。

Get-EventLog -LogName Security | Where-Object {$_.EventID -eq 4720} | Format-Table -AutoSize -Wrap
f4t66c6m

f4t66c6m2#

为了对@novalis的答案进行扩展,其中这样的对象肯定比findstr快,Format-Table应该整理出...你看到的是。
但是,为了更进一步,一个更快的方法是使用-FilterHashtable。具体地说:

Get-WinEvent -FilterHashtable @{Logname='Security';ID=4720} | Format-Table -AutoSize -Wrap

其速度更快的原因是,在使用where-Object时,您向系统请求所有系统日志,然后在脚本接收到这些日志后,您会过滤掉它们(findstr也是如此)。FilterHashtable只从系统请求与所需事件ID匹配的日志条目,因此需要向脚本发送的数据较少。

相关问题