Отслеживать коды выхода процесса Windows - PullRequest
0 голосов
/ 10 января 2019

На некоторых наших рабочих столах 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

(бесстыдно скопировано с поста блога и изменено)

Я получаю хороший вывод каждый раз, когда процесс завершается, но «код выхода» всегда пуст.

Это правильный подход? Могу ли я получить коды выхода или коды ошибок таким образом? Или я должен идти совершенно другим путем?

1 Ответ

0 голосов
/ 10 января 2019

Единственный способ заставить его работать - это:

https://social.technet.microsoft.com/Forums/lync/en-US/5b318b42-27c9-49d1-8c19-c5d7f0b9dbb2/getting-exit-code-from-startprocess?forum=winserverpowershell

PS C:\> $notepad = Start-Process notepad++ -Wait -PassThru
<close the application at this point>
PS C:\> $notepad.exitcode
PS C:\> 0

скрипт работает (ждет) в фоновом режиме, пока приложение не закроется (изящно или нет), затем вы можете запустить $ applicationname.exitxcode, чтобы получить код выхода.

...