{"id":10641,"date":"2006-04-25T12:18:08","date_gmt":"2006-04-25T12:18:08","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/powershell\/2006\/04\/25\/mshsnapin-part-2-developing-a-mshsnapin\/"},"modified":"2019-02-18T13:24:57","modified_gmt":"2019-02-18T20:24:57","slug":"mshsnapin-part-2-developing-a-mshsnapin","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/mshsnapin-part-2-developing-a-mshsnapin\/","title":{"rendered":"Mshsnapin (part 2): developing a mshsnapin."},"content":{"rendered":"<p>To develop a mshsnapin, you can&nbsp;use following three simple steps, <\/p>\n<ol>\n<li>Create a class derived from MshSnapIn class.\n<li>Build an assembly to&nbsp;contain the mshsnapin class created in step1 and also other cmdlet\/provider classes to be included in the mshsnapin.\n<li>Install the mshsnapin assembly created in step2 using installutil.exe.<\/li>\n<\/ol>\n<p>Following is the sample code for a mshsnapin class. Basically, you just need to fill in information about name, vendor and description of the mshsnapin. <\/p>\n<p><font face=\"Courier New\" size=\"2\">namespace XYZ.TestNameSpace<br \/>{<br \/>&nbsp;&nbsp;&nbsp; [RunInstaller(true)]<br \/>&nbsp;&nbsp;&nbsp; public class&nbsp;MyMshSnapIn : MshSnapIn<br \/>&nbsp;&nbsp;&nbsp; {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public MyMshSnapIn()<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : base()<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/font><\/p>\n<p><font face=\"Courier New\" size=\"2\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\/ &lt;summary&gt;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\/ Gets name of the mshsnapin. This will be the string to be used for registering this <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\/ mshsnapin. <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\/ &lt;\/summary&gt;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override string Name<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#8220;XYZ.TestNameSpace.MyMshSnapIn&#8221;;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/font><\/p>\n<p><font face=\"Courier New\" size=\"2\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\/ &lt;summary&gt;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\/ Gets vendor of the mshsnapin. <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\/ &lt;\/summary&gt;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override string Vendor<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#8220;XYZ Corporation&#8221;;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/font><\/p>\n<p><font face=\"Courier New\" size=\"2\"><\/p>\n<p><font face=\"Courier New\" size=\"2\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\/ &lt;summary&gt;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\/ Gets&nbsp;description of the mshsnapin. <br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \/\/\/ &lt;\/summary&gt;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override string&nbsp;Description<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#8220;This is a test mshsnapin&#8221;;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/font><\/p>\n<p>}<\/p>\n<p><font face=\"Times New Roman\" color=\"#000000\" size=\"3\">For step 2, you build the mshsnapin code (from step 1), cmdlet code, and provider code (from your normal cmdlet and provider development) into one assembly (for example MyMshSnapin.dll). <\/font><\/p>\n<p><font face=\"Times New Roman\" color=\"#000000\" size=\"3\">For step 3, you install the snapin assembly by running following command. (installutil.exe is an standard utility from CLR).<\/font><\/p>\n<p>&nbsp;&nbsp;&nbsp;<font face=\"Times New Roman\" size=\"3\">installutil.exe -i MyMshSnapin.dll<\/font><\/p>\n<p><font face=\"Times New Roman\" size=\"3\">&#8211; George<\/font><\/p>\n<p><font face=\"Times New Roman\" color=\"#000000\" size=\"3\"><\/font>&nbsp;<\/p>\n<p><\/font><\/p>\n<p>[<i>Edit: Monad has now been renamed to Windows PowerShell.  This script or discussion may require slight adjustments before it applies directly to newer builds.<\/i>]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To develop a mshsnapin, you can&nbsp;use following three simple steps, Create a class derived from MshSnapIn class. Build an assembly to&nbsp;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 [&hellip;]<\/p>\n","protected":false},"author":600,"featured_media":13641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-10641","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell"],"acf":[],"blog_post_summary":"<p>To develop a mshsnapin, you can&nbsp;use following three simple steps, Create a class derived from MshSnapIn class. Build an assembly to&nbsp;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 [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/10641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/users\/600"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=10641"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/10641\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media\/13641"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media?parent=10641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=10641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=10641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}