【发布时间】:2019-01-10 13:08:05
【问题描述】:
在我们的某些 Citrix Desktop 上,我们遇到了随机终止(崩溃?)应用程序的问题。事件日志没有显示任何内容。
我的想法是跟踪进程的启动和停止以及它们的退出/错误代码一段时间,并尝试找到一个模式。
我的方法是通过 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
(无耻地从博文中复制并修改)
每次进程终止时我都会得到一个不错的输出,但“exitcode”总是空的。
这是正确的方法吗?我可以通过这种方式获取退出代码或错误代码吗? 还是我必须走完全不同的路线?
【问题讨论】:
标签: powershell process wmi exit-code