В контексте разработки 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
Редактирование настроек отладки для вашего проекта командлета
Запустить внешнюю программу :
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Аргументы командной строки :
-NoProfile -NoExit -Command "Import-Module .\MyCoolCmdlet.dll"
Отладка вашего модуля
Теперь из Visual Studio запустите отладчик с помощью F5 , и у вас появится новое окно PowerShell с загруженным командлетом, и вы сможете отлаживать его как угодно.
Используйте псевдоним 'sdp' из любого окна PowerShell
Поскольку функция Start-DebugPowerShell находится в нашем профиле, и мы дали ей псевдоним sdp
, вы можете использовать ее для запуска второго экземпляра PowerShell в любое время, когда вам это нужно.