Skip to content


Subversion checkout URL

You can clone with
Download ZIP
PowerShell macros using NuGet to replace lost functionality in VS 2012
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

Wintellect VS Cmdlets Module

With Visual Studio 2012 dropping support for macros, the only way to do simple customizations is to download the VS SDK, write a VSIX, and have VS debugging VS. Personally, I find it ridiculous that we can no longer do simple extensibility in our main tool.

Because I've written numerous small macros, and use them on a daily basis, I was not looking forward to the extra effort to turn them into a VSIX. Fortunately, Visual Studio 2012 has the wonderful NuGet package manager built in so I converted my macros into PowerShell. While not as convenient as macros, they do work. You can read more about converting macros into PowerShell on my blog .

These macros/cmdlets work for both Visual Studio 2012 and Visual Studio 2010.Please fork and let me know if there's any bugs you find. I hope you find them useful.

Here's the about text showing all cmdlets. Of course, all cmdlets have detailed help for more information.


    Provides missing functionality, especially around debugging, to Visual Studio 2010 and Visual Studio 2012.

    This describes the basic commands included in the WintellectVSCmdlets module. With VS 2012 not offering
    macros, simple extensions require installing an SDK and debugging the extensions with a second instance
    of the IDE. In all, it makes for a very poor experience when you want to do simple customization of the 
    the development environment.

    These macros, which are very useful for debugging, demostrate that the NuGet Package Console is 
    sufficient for many of your customization needs. Most of these cmdlets are ports of VB.NET macros that 
    John Robbins has shown on his blog and books.

    All cmdlets work with both Visual Studio 2010 and Visual Studio 2012.

    Note that these cmdlets support C#, VB, and native C++. They probably support more but those were
    all the languages tested.

    If you have any questions, suggestions, or bug reports, please contact John at

    The following Wintellect VS cmdlets are included.

        Cmdlet                                          Description
        ------------------                              ----------------------------------------------
        Add-BreakpointsOnAllDocMethods                  Sets breakpoints on methods in the current code document. This
                                                        is very useful in .NET languages as the debugger expression 
                                                        evaluator does not support that.

        Remove-BreakpointsOnAllDocMethods               Removes all the breakpoints set with Add-BreakpointsOnAllDocMethods.
                                                        This cmdlet will not remove any of your breakpoints.

        Add-InterestingThreadFilterToBreakpoints        Adds the filter "ThreadName==InterestingThread" to all breakpoints to
                                                        make it easier to debug through a single transaction.

        Remove-InterestingThreadFilterFromBreakpoints   Removes the "ThreadName==InterestingThread" filter applied with

        Disable-NonActiveThreads                        Freezes all but the active thread so you can single step to the end
                                                        of a method without dramatically bouncing to another thread when you 
                                                        least expect it.

        Resume-NonActiveThreads                         Thaws all threads previously frozen with Disable-NonActiveThreads.

        Get-Breakpoints                                 Returns the latest version of the IBreakpoints derived list.

        Get-Threads                                     Returns all the threads.

        Invoke-NamedParameter                           A wonderful cmdlet that lets you easily call methods with many
                                                        optional parameters. Full credit to Jason Archer for this cmdlet.

        Invoke-WinDBG                                   VS 2010/2012 have ease of use, where WinDBG (with SOS + SOSEX) have 
                                                        tons of power to tell you what's going on in your application. This
                                                        cmdlet starts WinDBG on the process you're currently debugging in the
                                                        IDE so you can have the best of both worlds.

        Open-LastIntelliTraceRecording                  When you stop debugging, your current IntelliTrace log disappears. This
                                                        cmdlet fixes that by opening the last log you produced so you can post-mortem
                                                        look at your debugging session.

    Online help and updates:
Something went wrong with that request. Please try again.