Раньше я запускал длинный сценарий в ISE и начал работать на секунду во время его работы, следя за его прогрессом на панели консоли. Я копировал вызов функции в другую часть второго скрипта, когда я опечатывал, и вместо Ctrl-V нажал Ctrl-C. Сразу же вышел исполняемый скрипт. Кажется, ISE интерпретирует его как SIGTERM для исполняемого скрипта, хотя у меня не было выделенной панели консоли.
Я не вижу никаких параметров, чтобы отключить это, но если это предназначенное поведение, то я считаю это неприемлемым. Мне нужно найти способ отключить это, так как я потерял около часа работы (сценарий должен запускаться от начала до конца) через один случайный щелчок, который не должен был ничего делать. Кто-нибудь знает, если это предполагаемое поведение, или я сталкиваюсь с чем-то другим?Powershell ISE - Ctrl-C на пустой строке убивает исполняемый скрипт?
ответ
Обход: File
>New PowerShell Tab
Это создаст новую среду, которая имеет дополнительное преимущество, что позволяет запускать второй сценарий независимо от первого.
Но вы можете подумать, что ISE лучше подходит для разработки и тестирования скриптов, а не для длительных «производственных» процессов, в то время как вы также разрабатываете другие скрипты. Я имею в виду, что вы можете использовать его для этого, но это, вероятно, считается прецедентом.
Вы упомянули:
Создание новой вкладки делает работу, но это означает, что я не могу видеть в настоящий момент выполняющийся скрипт на первый взгляд.
В этом случае, вы можете открыть новую консоль хоста (powershell.exe
) и запустить сценарий вне ISE (продолжая развивать его и сохранить его в ISE). Но это все равно будет трудно увидеть, если вы не переместите его на другой монитор. Thoug hin в этом случае, вы могли бы просто открыть целый новый экземпляр ISE!
Спасибо, это похоже на действительное обходное решение. Дело в том, что я все еще разрабатываю долговременный скрипт, поэтому я его запускал в ISE в то время. В производстве этот скрипт будет работать без проблем на наших серверах сборки. Создание новой вкладки действительно работает, но это означает, что я не могу сразу увидеть исполняемый скрипт. Кажется, это глупое дизайнерское решение для того, чтобы заставить Ctrl-C сделать это в окне редактора. – Gargravarr
@ Gargravarr добавил немного больше информации в редактирование. – briantist
Оба действительных пункта. Я просто хочу, чтобы был простой вариант сказать «не делай этого». – Gargravarr
Ничего себе. Много работы, чтобы избежать использования 0,5сек для проверки кнопки, что один раз в день, когда вы не знаете, какую кнопку вы собираетесь щелкнуть. :-) Это определенно по дизайну. Когда вы не выбираете текст, CTRL + C прервет скрипт, как в обычной консоли. Если вы используете длинный скрипт, я бы предложил отдельную консоль powershell/ISE. –
@FrodeF. У меня не было бы проблем с Ctrl-C, прервав скрипт *, если бы была выбрана панель консоли *. В этом случае я этого не сделал - курсор находился в панели текстового редактора. Ctrl-C не должен быть передан на консоль. Как легко проскользнуть и нажать C вместо V? Эти опечатки должны быть безвредными. И, как я объяснил briantist ниже, я все еще работаю над этим долго работающим скриптом, поэтому его запускают в ISE. – Gargravarr
ISE предназначен для разработки, PowerShell консоли для выполнения. Во время разработки вы используете панель сценариев в качестве консоли, поэтому ее отмена по CTRL + C, в то время как не выбор текста имеет жизненно важное значение. Если бы мне пришлось щелкнуть на консоли, я бы, вероятно, больше не использовал ISE для разработки. Или я попытаюсь переопределить горячую клавишу с помощью дополнения ISE, если это возможно. С другой стороны, MS планирует сделать поддержку PowerShell ISE более Extensions (начиная с предварительного просмотра ISE), поэтому этот параметр может быть добавлен, чтобы изменить это. Отправьте его на uservoice –