在某些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
(从博客文章中无耻地复制并修改)
每次进程终止时,我都会得到很好的输出,但是“ exitcode”始终为空。
这是正确的方法吗?我可以这样获得退出代码或错误代码吗? 还是我必须走一条完全不同的路线?
答案 0 :(得分:0)
我可以使其正常工作的唯一方法是:
$actualUrl = urldecode ($_GET ['url']);
该脚本在后台运行(等待),直到应用程序关闭(正常关闭或关闭),然后可以运行$ applicationname.exitxcode获取退出代码。