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.exe
Command 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.exe
Start 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