I'm trying to write a PowerShell module as a VB.NET project with Visual Studio 2015. I've been able to put a few commands together, compile the class library into a DLL, import the module into a PowerShell session and call the command I created. All good so far. But as I'm expanding this module I'm going to need to be able to debug it.
So I added another project to the solution, a console application.  I set it as the startup project and referenced the PowerShell class in the first project. So far when I call the PowerShell function I wrote all the work is being done in the EndProcessing() subroutine.  I can't call that from my console app because It's protected.
The question: How do I properly call my Get-TestCommand PowerShell function from a console app in such a way that Visual Studio knows I'm referencing code in a separate project and not the compiled DLL while triggering the breakpoints I put in the Powershell class library?
It's possible to debug your cmdlet directly without needing a separate project.
Note that the .exe paths below are for the "native" application versions — 32-bit (Windows) Powershell on 32-bit Windows, 64-bit (Windows) Powershell on 64-bit Windows — and assume Windows is installed to C:.
Open the properties of your class library project.
Under the Debug section, click the Open debug launch profiles UI link.
In the Launch Profiles window, click Create a new profile (first button in the upper-left) and select Executable.
Configure the new launch profile as follows:
Executable: C:\Program Files\PowerShell\7\pwsh.exeCommand line arguments: -NoLogo -Command "Import-Module '.\MyModule.dll'; Get-TestCommand;"
Close the Launch Profiles window.
Click the downward-pointing arrow in the Start Debugging toolbar button and select the new launch profile.
Open the properties of your class library project and configure the Debug tab as follows:
Start Action
Start external program: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe or C:\Program Files\PowerShell\7\pwsh.exeStart Options
Command line arguments: -NoLogo -Command "Import-Module '.\MyModule.dll'; Get-TestCommand;"

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With