param([Parameter(Mandatory=$true)][string]$Nume, [int]$TimeoutMs = 300000) $ErrorActionPreference = 'Stop' $dir = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat' $prg = Join-Path $dir ($Nume + '.prg') $log = Join-Path $dir ('out\' + $Nume + '.log') $vfp = 'C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe' if (-not (Test-Path $prg)) { "Nu exista $prg"; exit 1 } $viu = Get-WmiObject Win32_Process -Filter "Name='vfp9.exe'" | Where-Object { $_.CommandLine -like ('*' + $Nume + '*') } if ($viu) { "Ruleaza deja o instanta a suitei (PID " + ($viu.ProcessId -join ',') + "). Nu lansez a doua." exit 1 } Set-Location $dir Remove-Item (Join-Path $dir ($Nume + '.FXP')) -ErrorAction SilentlyContinue Remove-Item $log -ErrorAction SilentlyContinue $p = Start-Process -FilePath $vfp -ArgumentList '-A', '-T', $prg -PassThru "lansat PID " + $p.Id $null = $p.WaitForExit($TimeoutMs) if (-not $p.HasExited) { "ATARNAT dupa " + [int]($TimeoutMs/1000) + "s - omor instanta (filtrat pe CommandLine)" Get-WmiObject Win32_Process -Filter "Name='vfp9.exe'" | Where-Object { $_.CommandLine -like ('*' + $Nume + '*') } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force } } if (Test-Path $log) { Get-Content $log } else { "Log inexistent: $log" }