2013-04-30 4 views
4

При написании Powershell скрипт в ISE у меня есть что-то аналогичное (я выполнить с F5):Клиринговый ISE Powershell среда/отладки методологии

Function DoSomethingNow 
{ 
    "What am I doing?" 
} 

DoSomethingNow 

Проблема, если я переименовать или удалить DoSomethingNow это все еще доступны в сеансе. Это вызывает путаницу в том, что мой скрипт будет продолжать работать, тогда как я ожидал бы ошибку в отсутствие функции.

Я могу только предположить, что мне нужно очистить сеанс после каждого раунда отладки, однако это может быть возможно только при перезапуске ISE (поэтому перезапуск сеанса powershell).

Поэтому я спрашиваю:

  • Можно не очистить сессию, так что DoSomethingNow уже не в рамках?
  • Что такое «правильный» способ отладки и выполнения сценариев powershell?
  • Возможно, я не использую ISE правильно?

Буду признателен за правильное направление.

+0

Возможный дубликат [Можно ли сбросить пробел в Powershell ISE?] (Http://stackoverflow.com/questions/7338395/is-it-possible-to-reset-the-runspace-in-powershell- ise) – alroc

ответ

3

Вы можете «удалить» функцию с Remove-Item и FunctionPSDrive

Remove-Item Function:\DoSomethingNow

Если добавить это в конце сценария & удалить каждую функцию (только в отладочных ситуациях, я надеюсь), вы будете получать новое начало каждый раз. Вы можете сделать подобное для псевдонимов & переменных окружения, если вы их настраиваете.

Вы также можете найти $Error.Clear(), чтобы удалить все записи в объекте $Error, а также Remove-Variable (возможно, вы можете догадаться, что это делает).

+0

Возможно, я думаю об этом неправильно, но, похоже, хлопот должен все это очистить? Неужели .net стал укорениться во мне? Кроме того, почему вы только очистите их в ситуациях отладки? –

+0

Это не так много. Net vs. Powershell (так как PoSH * is * .Net), поскольку это скомпилированная программа или консольный сеанс/среда. Когда вы выходите из скомпилированной программы, все о ее состоянии, которое не сохраняется в другом месте, испаряется. В рамках сеанса консоли все, что вы делаете, показывается до тех пор, пока вы не очистите его, или не убейте весь сеанс - вы работаете * в * скомпилированной программе. – alroc

+0

Так почему же нет достойного способа очистить сеансы в конце вашего скрипта? Я неправильно подхожу к разработке сценариев? –

Смежные вопросы