На некоторых наших рабочих столах Citrix у нас есть проблема со случайным завершением (сбой?) Приложений. Журнал событий ничего не показывает.
Моя идея заключалась в том, чтобы некоторое время отслеживать запуск и остановку процессов и их кодов выхода / ошибок и пытаться найти схему.
Мой подход через Powershell:
function Enable-ProcessStopTrace {
[CmdLetBinding()]
param(
)
$Query = "Select * From __InstanceDeletionEvent within 2 Where TargetInstance ISA 'Win32_Process'"
$Identifier = "StopProcess"
$ActionBlock = {
$e = $event.SourceEventArgs.NewEvent.TargetInstance
write-host ("Process {0} with PID {1} has stopped at {2}" -f $e.Name, $e.ProcessID, $event.TimeGenerated)
$fmt = 'ProcessStopped: (ID={0}, Parent={1}, Time={2}, Name="{3}", ExitCode={4})'
$msg = $fmt -f $e.ProcessId, $e.ParentProcessId, $event.TimeGenerated, $e.Name, $e.Exitcode
write-host ($msg)
}
Register-WMIEvent -Query $Query -SourceIdentifier $Identifier -Action $ActionBlock
}
Enable-ProcessStopTrace
(бесстыдно скопировано с поста блога и изменено)
Я получаю хороший вывод каждый раз, когда процесс завершается, но «код выхода» всегда пуст.
Это правильный подход? Могу ли я получить коды выхода или коды ошибок таким образом?
Или я должен идти совершенно другим путем?