спасибо за вашу помощь.
Я пытаюсь запустить макросы Excel через PowerShell и записать ход выполнения в некоторые файлы CSV.Проблема, с которой я сталкиваюсь, заключается в том, что макросы Excel зависают, и мне нужно добавить возможность тайм-аута.Мои исследования привели меня к убеждению, что я должен поместить свой ScriptBlock в задание, а затем выполнить проверку тайм-аута для каждого задания.Проблема, с которой я столкнулся, заключается в том, что ни один из кодов внутри задания, кажется, не работает должным образом, и я не могу пройти через него, чтобы отладить его.Я хочу, чтобы выполнялся код в задании или альтернативный метод тайм-аута.Мой код выглядит следующим образом:
import-csv $TestParamFile | % {
$Succ = $false
$SSlocation = $TDLocation + "\" + $_.Folder + "\" + $_.Spreadsheet
$Job = Start-Job -Name RunTestSS -ScriptBlock {
# Declare and open excel
$excel = new-object -comobject excel.application
#Open file in excel
[Void]$excel.workbooks.open($SSlocation, $false)
$workbook = $excel.ActiveWorkbook
# Run test macro
$excel.Run("$($_.Macro)", "1")
$Succ = $worksheet.Range("Success").Value2
# Save and close workbook
$workbook.Save()
$workbook.Close($false,$null,$false)
}
# Wait for job to complete with timeout (in seconds)
$Job | Wait-Job -Timeout 100
# Check to see if any jobs are still running and stop them
$Job | Where-Object {$_.State -ne "Completed"} | Stop-Job
#Kill excel instance
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
Get-Process excel | Stop-Process -Force
Remove-Variable excel
}