我搜索了这里已有的答案,但没有找到我能说的最终回答我的问题。我有一个脚本,它应该接触到文本文件定义的几个服务器,并报告来自EventLog的详细信息。它还会写入文件,将生成的文件作为附件发送电子邮件,并为我提供处理命令所需的时间,这样我就可以监控整体性能,看看是否有任何变化。那部分工作正常。
Write-Output ($Start = Get-Date) | Out-File -Append F:\PowerShell\UnExpectedShutdowns.txt
$Computers = Get-Content -Path F:\PowerShell\servers.txt
Get-EventLog -logname System -ComputerName $Computers | ? {$_.TimeWritten -gt $lasttime -and $_.EventID -eq "6008"} | Format-Table -Wrap -Property MachineName, Index, TimeGenerated, EntryType, Source, InstanceID, Message -AutoSize | Out-File -Append -Force F:\PowerShell\UnExpectedShutdowns.txt
Write-Output (($Stop = Get-Date) - $Start).TotalSeconds | Out-File -Append F:\PowerShell\UnExpectedShutdowns.txt
Send-MailMessage -From sender@emaildomain.com -Subject "Daily Check for Server Shutdowns" -To receiver@emaildomain.com -Attachments F:\PowerShell\UnExpectedShutdowns.txt -Body "<p style=""font-family: Verdana, Geneva, sans-serif; font-size: 12px;"">Please review the attached document for new unexpected server shutdowns. </p><p> </p><p style=""font-family: Verdana, Geneva, sans-serif; font-size: 12px;"">The original file is located on <a href=""file:///\\SERVER\F$\Powershell\UnExpectedShutdowns.txt"">\\SERVER\F$\Powershell\UnExpectedShutdowns.txt</a></p><p style=""font-family: Verdana, Geneva, sans-serif; font-size: 12px;"">It should be pared down from time to time to maintain its size</p>" -BodyAsHtml -Priority Normal -SmtpServer smtp.dept.domain.com
我已将此添加为计划任务。如果我手动在任务计划程序外运行,我会得到我期望的结果。
MachineName Index TimeGenerated EntryType Source InstanceId Message
----------- ----- ------------- --------- ------ ---------- -------
SERVERNAME9999.fqdn 123456 3/10/2016 11:11:46 AM Error EventLog 1234567890 The previous system shutdown at 11:08:17 AM on 3/10/2016 was unexpected.
然而,当我让它按计划运行时,我得到的结果减去最后2列(InstanceID&amp; Message)
MachineName Index TimeGenerated EntryType Source
----------- ----- ------------- --------- ------
SERVERNAME9999.fqdn 123456 3/10/2016 11:11:46 AM Error EventLo
g
作为计划任务,我使用所有服务器的管理员组中的帐户运行它,并且我拥有&#34;以最高权限运行&#34;选项已选中。为什么我的最后两列缺失?
答案 0 :(得分:1)
就像nkasco所说的那样,在输出到文件时使用Repeater
而不是Select
。这可能是由于Format-Table
与Format-Table
或-AutoSize
造成的,因为在另一个用户下作为计划任务运行时我不认为它可以正确计算控制台大小并且它是&#39} ; s切断柱子以适应。除非您打算将结果直接输出到屏幕,否则您不应该使用-Wrap
。
另外,在Format-Table
中使用-After
,这样每个服务器只返回所需的日期范围,而不是通过网络传递整个事件日志,然后强制PowerShell从那里过滤所有内容。
Get-EventLog