我使用PowerShell Studio 2014 Trial创建了一个表单,其中包含两个控件,即一个命令按钮&一个文本按钮。以下是button1上点击事件的代码 -
$button1_Click={
$results=Get-WinEvent -FilterHashtable @{ LogName = "application"; StartTime = "10/30/2014 12:00:01 AM"; EndTime = "10/30/2014 11:59:59 PM" }
$textbox1.Text=$results
}
当我执行此操作时,它不会给出包含日志的预期输出。
显示 - "System.Diagnostics.Eventing.Reader.EventLogRecord"
但是,如果我跑 -
Get-WinEvent -FilterHashtable @{ LogName = "application"; StartTime = "10/30/2014 12:00:01 AM"; EndTime = "10/30/2014 11:59:59 PM" }
在PowerShell ISE上,它会显示所有日志。
答案 0 :(得分:2)
就像我在评论中说的那样,你得到了你要求的输出。 PowerShell控制台使用内置cmdlet(如Out-Default
)处理对象输出。你说你想要所有那些信息,但我猜你想要的是默认显示的内容。因此,我将结果如下
$results = Get-WinEvent -FilterHashtable @{ LogName = "application"; StartTime = "10/30/2014 12:00:01 AM"; EndTime = "10/30/2014 11:59:59 PM" } | Select provider,timecreated,id,leveldisplayname,message | Format-Table | Out-String -Width 1024
使用Select
获取我们想要的内容。根据需要更改此项。使用Format-Table进行固定宽度输出,然后将其输入Out-String