Minding Path Inputs in a Cmdlet

When I was a Monad neophyte, I was asked to write a Cmdlet taking a file path as a parameter. A big mistake I made was not keeping in mind that in Monad the FileSystem provider was just one of the many providers. (This makes Monad different from many other shells where you are always…


Adding help for cmdlets in a MshSnapIn

Now that you know how to create an MshSnapIn, you might want to add help content for all those cmdlets that you developed and get them displayed by “get-help” cmdlet.  To add help content you must know how a Monad Cmdlet Help file looks. See any of the *-Help.xml files in Monad installation directory for reference….


Single Shell vs Custom Shell

With Monad Beta 3 release, we’ve introduced the concept of the “single shell”. What is a single shell? “One shell to rule them all … and in the darkness…” (Sorry I can’t stop saying that quote everytime I hear “single shell”!) Well rather than having to create a separate executable/shell to host your own cmdlets/providers,…


Ensuring Script Portability with #requires

With the MshSnapIn model in Beta 3, there is no gaurantee that a certain Cmdlet or Provider, apart from those in the default MshSnapIns, is available at any point. There could be a number of reasons. The MshSnapIn may not have been installed. The MshSnapIn could be removed with the remove-mshsnapin Cmdlet or not even added yet. This will cause scripts using the unavailable…


Mshsnapin (part 2): developing a mshsnapin.

To develop a mshsnapin, you can use following three simple steps, Create a class derived from MshSnapIn class. Build an assembly to contain the mshsnapin class created in step1 and also other cmdlet/provider classes to be included in the mshsnapin. Install the mshsnapin assembly created in step2 using installutil.exe. Following is the sample code for a mshsnapin…

Mshsnapin (part 1): usage of mshsnapin commands.

Latest beta3 release of monad added the capability of adding/removing cmdlets and providers in current running session through mshsnapins. Mshsnapin is a logic group of cmdlets and providers can be manipulate as a unit in monad engine. Following commands can be used for manipulating mshsnapins, get-mshsnapin: this will list all mshsnapin’s that are loaded in current monad session. get-mshsnapin -reg:…


Using Monad for logon scripts

In case you were wondering, yes, you can use Monad for your logon scripts.  You can’t just assign a .MSH file as a logon script however, since only file types with file associations work as logon scripts.  Monad installation doesn’t create a file association “.MSH -> msh.exe -command %1” for security reasons.  The best way…