Скрипт Powershell дает разные результаты при запуске вручную

Я искал ответы уже здесь, но не нашел ничего, что я мог сказать, окончательно ответил на мой вопрос. У меня есть скрипт, который должен обращаться к нескольким серверам, как определено в текстовом файле, и сообщать подробности из 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>&nbsp;</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 & Message)

MachineName                      Index TimeGenerated          EntryType Source 
-----------                      ----- -------------          --------- ------ 
SERVERNAME9999.fqdn             123456 3/10/2016 11:11:46 AM      Error EventLo
                                                                        g      

В качестве запланированного задания я запускаю его с учетной записью, которая входит в группу администраторов для всех серверов, и у меня отмечена опция "Запускать с наивысшими привилегиями". Почему мои последние 2 столбца отсутствуют?

1 ответ

Как сказал nkasco, используйте Select и не Format-Table при выводе в файл. Это, вероятно, связано с Format-Table с -AutoSize или же -Wrap поскольку при выполнении в качестве запланированной задачи под другим пользователем я не думаю, что он может правильно рассчитать размер консоли и обрезает столбцы для подгонки. Вы не должны использовать Format-Table если вы не собираетесь выводить результат прямо на экран.

Также используйте -After в вашем Get-EventLog так что каждый сервер возвращает только необходимый диапазон дат вместо того, чтобы передавать весь журнал событий по проводам, а затем заставлять PowerShell фильтровать все оттуда.

Get-EventLog -logname System -ComputerName $Computers -After $lasttime | ? {$_.EventID -eq "6008"} | Select MachineName, Index, TimeGenerated, EntryType, Source, InstanceID, Message | Out-File -Append -Force F:\PowerShell\UnExpectedShutdowns.txt
Другие вопросы по тегам