Я знаю, что этой публикации уже около года, но в любом случае она может помочь кому-то еще бороться с этим.
Я обнаружил, что следующий сценарий работает для меня с PowerShell 2.0. Я также использую VS2010 SP1 на 64-битной Windows 7.
С PS 2.0 вам больше не нужно устанавливать командлеты, используя installutil . Вместо этого вы можете использовать Import-Module
(вместо этого не требуются права администратора). Я не буду вдаваться в подробности о том, как это сделать, поскольку поиск в Интернете выявит большинство деталей, но вкратце вам нужно будет создать папку (если она еще не существует) по адресу:
md (Join-Path (Split-Path $profile) modules)
В папке модулей создайте другую папку с тем же именем, что и у вашей DLL командлета (за исключением «.DLL»). Эта папка будет содержать ваш двоичный файл и файл psd1, который описывает вашу DLL (см. Манифесты модуля ). Для моего удобства я создал эту папку как символическую ссылку на папку bin \ debug моего проекта.
Вам по-прежнему нужно запускать PowerShell (или PowerShell ISE) из Visual Studio, как описано в другом месте раздела «Действие запуска» на вкладке «Отладка» свойств вашего проекта.
Установите свои точки останова и уходите. После запуска PowerShell введите:
Import-Module <ModuleName>
Затем запустите командлет.
Пример
C:\Users\<me>\Documents\WindowsPowerShell\modules\MyCmdlet\MyCmdlet.dll
C:\Users\<me>\Documents\WindowsPowerShell\modules\MyCmdlet\MyCmdlet.pdb
C:\Users\<me>\Documents\WindowsPowerShell\modules\MyCmdlet\MyCmdlet.psd1
C:\Users\<me>\Documents\WindowsPowerShell\modules\MyCmdlet\MyCmdlet.Types.ps1xml (etc.)
В типе PowerShell (также можно указать в своем профиле):
Import-Module MyCmdlet
Для меня это касается всех моих точек останова, а также останавливается на исключениях. Все без привязки к процессу и т. Д.