{"id":10971,"date":"2006-04-25T12:17:42","date_gmt":"2006-04-25T12:17:42","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/powershell\/2006\/04\/25\/support-for-existing-apps-in-monad\/"},"modified":"2019-02-18T13:25:08","modified_gmt":"2019-02-18T20:25:08","slug":"support-for-existing-apps-in-monad","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/support-for-existing-apps-in-monad\/","title":{"rendered":"Support for Existing apps in Monad"},"content":{"rendered":"<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>Monad provides strong support for existing apps and technology. &nbsp;If you use native cmdline exes, vbscripts, batch files, perl scripts etc to manage and maintain windows, you can pretty much use them the same way from monad as you would from cmd.exe.<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>For example, I am used to findstr.exe and xcopy.exe. I can use them from monad as is.<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt; findstr Monad monad.txt<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&#8220;Monad Rocks&#8221;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt; xcopy monad.txt monad2.txt<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Does monad2.txt specify a file name<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>or directory name on the target<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>(F = file, D = directory)? f<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>C:monad.txt<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>1 File(s) copied<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>You can also use get-command cmdlet to discover them if they are in your PATH.<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt; get-command findstr<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>CommandType&nbsp;&nbsp;&nbsp;&nbsp; Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Definition<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&#8212;&#8212;&#8212;&#8211;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212;&#8212;-<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Application&nbsp;&nbsp;&nbsp;&nbsp; findstr.exe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\\WINDOWS\\system32\\findstr.exe<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt; <\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>Let\u2019s look at a vbscript example. &nbsp;<a title=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/scripts\/default.mspx\" href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/scripts\/default.mspx\">Script Center website<\/a> has a good collection of useful vbscripts. Today we will play with this <a title=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/scripts\/desktop\/info\/dminvb03.mspx\" href=\"http:\/\/www.microsoft.com\/technet\/scriptcenter\/scripts\/desktop\/info\/dminvb03.mspx\">one<\/a>. The script uses WMI to query the machine for computer system and processor information.&nbsp; You can run it in Monad as follows<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt; cscript processor.vbs<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Microsoft (R) Windows Script Host Version 5.6<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Computer Name: ABHISHEK1<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>System Type: X86-based PC<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Number Of Processors: 2<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Manufacturer: GenuineIntel<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Intel(R) Pentium(R) 4 CPU 3.00GHz<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Description: x86 Family 15 Model 2 Stepping 9<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Processor ID: BFEBFBFF00000F29<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Address Width: 32<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Data Width: 32<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Family: 2<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Maximum Clock Speed: 2992<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Manufacturer: GenuineIntel<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Intel(R) Pentium(R) 4 CPU 3.00GHz<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Description: x86 Family 15 Model 2 Stepping 9<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Processor ID: BFEBFBFF00000F29<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Address Width: 32<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Data Width: 32<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Family: 2<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Maximum Clock Speed: 2992<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>If you look at the vbscript example above, it is using WMI to query for some system properties. WMI is a useful existing management technology and Monad provides strong support for it. &nbsp;The primary interface to WMI in Monad is the <b><span>get-wmiobject<\/span><\/b> cmdlet. Let\u2019s use it to get the same information we got from the vbscript.<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>First we query for an instance of the win32_ComputerSystem class<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt; get-wmiobject win32_computersystem | format-list SystemType,Name,NumberOfProcessors<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>SystemType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : X86-based PC<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ABHISHEK1<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>NumberOfProcessors : 2<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>How did the get-wmiobject cmdlet discover the namespace? &nbsp;The default namespace used by the cmdlet is root\\cimv2. But you can supply the namespace via the \u2013Namespace parameter. &nbsp;The cmdlet also supports accessing information via WMI from remote machines and can also be used to browse the namespace for class information. But more on this cmdlet later; let\u2019s complete the task at hand.&nbsp; We need to query WMI for instances of win32_processor class.<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt; $processor = get-wmiobject win32_processor<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MSH C:\\&gt; $processor | format-list Name,ProcessorID,MaxClockSpeed,AddressWidth,Description<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Intel(R) Pentium(R) 4 CPU 3.00GHz<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>ProcessorID&nbsp;&nbsp; : BFEBFBFF00000F29<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MaxClockSpeed : 2992<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>AddressWidth&nbsp; : 32<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Description&nbsp;&nbsp; : x86 Family 15 Model 2 Stepping 9<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Intel(R) Pentium(R) 4 CPU 3.00GHz<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>ProcessorID&nbsp;&nbsp; : BFEBFBFF00000F29<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>MaxClockSpeed : 2992<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>AddressWidth&nbsp; : 32<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" color=\"#993300\" size=\"2\"><span>Description&nbsp;&nbsp; : x86 Family 15 Model 2 Stepping 9<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>Using get-wmiobject and about 3 lines of monad script we have ported the above vbscript to monad! Monad will also provide support for COM interop. You will be able to use Monad scripts for COM automation.<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>That\u2019s all I have time for today. Hope you find it useful!<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>&nbsp;<\/span><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><span>-Abhishek<\/span><\/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>Monad provides strong support for existing apps and technology. &nbsp;If you use native cmdline exes, vbscripts, batch files, perl scripts etc to manage and maintain windows, you can pretty much use them the same way from monad as you would from cmd.exe. &nbsp; For example, I am used to findstr.exe and xcopy.exe. I can use [&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-10971","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell"],"acf":[],"blog_post_summary":"<p>Monad provides strong support for existing apps and technology. &nbsp;If you use native cmdline exes, vbscripts, batch files, perl scripts etc to manage and maintain windows, you can pretty much use them the same way from monad as you would from cmd.exe. &nbsp; For example, I am used to findstr.exe and xcopy.exe. I can use [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/10971","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=10971"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/10971\/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=10971"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=10971"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=10971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}