В контексте разработки Cmdlet и проблем с разгрузкой вашей DLL существует два подхода, которые я использую.
Во-первых, я разрабатываю Visual Studio и настраиваю внешнюю программу (PowerShell) на загрузите свой командлет. Таким образом, мой модуль загружается, когда я начинаю отладку, и выгружается, когда я прекращаю отладку.
Во-вторых, в тех случаях, когда я знаю, что хочу загрузить модуль, сделайте некоторую работу и убедитесь, что модуль выгружен впоследствии я использую второй экземпляр PowerShell. Это обсуждалось в других ответах, и мой ответ ниже показывает, как включить этот рабочий процесс, используя функцию с псевдонимом в моем профиле. Я изменяю подсказку, чтобы у меня было визуальное напоминание о том, что я нахожусь в «рекурсивном окне PowerShell».
Создайте сценарий в своем профиле, чтобы запустить PowerShell
function Start-DebugPowerShell
{
PowerShell -NoProfile -NoExit -Command {
function prompt {
$newPrompt = "$pwd.Path [DEBUG]"
Write-Host -NoNewline -ForegroundColor Yellow $newPrompt
return '> '
}
}
}
Set-Alias -Name sdp -Value Start-DebugPowerShell
Отредактируйте отладку настройки для вашего проекта Cmdlet
Запустить внешнюю программу :
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Аргументы командной строки :
-NoProfile -NoExit -Command "Import-Module .\MyCoolCmdlet.dll"
Отладка вашего модуля
Теперь из Visual Studio запустите отладчик с F5, и у вас есть новое окно PowerShell с загруженным Cmdlet, и вы можете отлаживать его, как вам нравится.
Использовать псевдоним «sdp» из любого окна PowerShell
Так как функция Start-DebugPowerShell находится в нашем профиле, и мы дали ей псевдоним sdp
, вы можете использовать это, чтобы запустить второй экземпляр PowerShell в любое время, когда вам это нужно.