Я работаю со сценарием, который использует Excel в качестве приложения COM, поэтому всякий раз, когда я закрываю свой сценарий с помощью кнопки X, он оставляет задание Excel открытым в фоновом режиме.
Так что у меня естьфункция, которая закрывает Exceltask всякий раз, когда я даю «выход» в качестве пользовательского ввода, но я хочу иметь возможность закрыть консоль и преуспеть с помощью кнопки X на консоли. Есть ли способ, которым я могу изменить поведение с помощью кнопки X, чтобы она сначала активировала функцию? Чтобы дать представление о функции:
function Close(){
if($workbook){$workbook.close($false)}
if($excel){[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$excel)}
[gc]::Collect()
[gc]::WaitForPendingFinalizers()
Remove-Variable excel -ErrorAction SilentlyContinue
exit
}
РЕДАКТИРОВАТЬ
Кажется, что выход из кнопки x останется проблемой для меня, как это thread (github) предлагает.
Итак, причина, по которой он интересуется, , что :
"Событие никогда запускается, если PowerShell не контролирует собственное завершение: таким образом, закрытие окна / выход из эмулятора терминала не запустит обработчик событий. "
, что именно так и происходит, нажав клавишу x-кнопка. Так что эта проблема рассматривается в PS 7.0. Кроме того, эта тема , в которой обсуждается та же проблема, также помогла мне найти тему на github.