Hier ein simples Beispiel, wie man mittels PowerShell einen Prozess starten kann, und wenn er zu lange läuft, dies erkennen und drauf reagieren kann.
$MaxWaitTime=5000 # in ms
$Executable='Notepad.exe'
$ProcessStartInfo=New-Object System.Diagnostics.ProcessStartInfo
$ProcessStartInfo.FileName=$Executable
$Process=New-Object System.Diagnostics.Process
$Process.StartInfo=$ProcessStartInfo
$Process.Start() | Out-Null
if ($Process.WaitForExit($MaxWaitTime) -ne $true) { Throw "Process timeout" }