{"id":51373,"date":"2010-02-07T00:01:00","date_gmt":"2010-02-07T00:01:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/heyscriptingguy\/2010\/02\/07\/hey-scripting-guy-weekend-scripter-conversion-module-part-2\/"},"modified":"2010-02-07T00:01:00","modified_gmt":"2010-02-07T00:01:00","slug":"hey-scripting-guy-weekend-scripter-conversion-module-part-2","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/scripting\/hey-scripting-guy-weekend-scripter-conversion-module-part-2\/","title":{"rendered":"Hey, Scripting Guy! Weekend Scripter: Conversion Module, Part 2"},"content":{"rendered":"<p class=\"MsoNormal\"><a class=\"addthis_button\" href=\"http:\/\/www.addthis.com\/bookmark.php?v=250&amp;pub=scriptingguys\"><img decoding=\"async\" alt=\"Bookmark and Share\" src=\"http:\/\/s7.addthis.com\/static\/btn\/v2\/lg-share-en.gif\" width=\"125\" height=\"16\"><\/a><\/p>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p class=\"MsoNormal\">Microsoft Scripting Guy Ed Wilson here. One of the cool things about writing scripts on the weekend, is the lack of distraction. Because there are few things to compete for one&rsquo;s attention, there is more time to polish and more time to clean up the code. <\/p>\n<\/p>\n<p class=\"MsoNormal\">For example, consider the ConversionModule.psm1 module I worked on yesterday. After I finished writing it and posted it to the SharePoint site that Craig and I share, I stretched out on the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Futon\"><font face=\"Segoe\">futon<\/font><\/a> in my entertainment room, put on <a href=\"http:\/\/en.wikipedia.org\/wiki\/A_Midsummer_Night%27s_Dream_(Mendelssohn)\"><font face=\"Segoe\">A Midsummer Night&rsquo;s Dream<\/font><\/a> by Mendelssohn, and sipped a cup of <a href=\"http:\/\/en.wikipedia.org\/wiki\/Rooibos\"><font face=\"Segoe\">Rooibos tea<\/font><\/a>. I turned on an electric blanket and in my relaxed state thought of several things; I could do to improve the module. Ah, the beauties of weekend scripting. During the rapid pace of the normal workday, I never find time to stretch out on a futon and listen to Mendelssohn. <\/p>\n<p class=\"MsoNormal\">So what is wrong with the module I wrote yesterday? Not a thing that I know of. It works. Nevertheless, there are a few things to do to improve the function. As seen in the following image some of the information that is returned by the <b>Get-Help<\/b> cmdlet is incomplete (for example, the <b>Description<\/b>) and some of the information (such as the data type of the input parameter) is ambiguous. <\/p>\n<p class=\"Fig-Graphic\"><img decoding=\"async\" title=\"Image of results of running Get-Help cmdlet\" alt=\"Image of results of running Get-Help cmdlet\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2010\/february\/hey0207\/wes-02-7-10-01.jpg\" width=\"600\" height=\"386\"><\/p>\n<p class=\"MsoNormal\">The <b>Description<\/b> is the easiest problem to fix. To fix this, you need only supply a string value for the <b>.DESCRIPTION<\/b> tag inside the help area. It is a best practice to use a complete sentence for the description. In addition, I like to include the name of the function in the description because the <b>Synopsis<\/b> does not generally repeat the function name. The modification is seen in the following image. <\/p>\n<p class=\"Fig-Graphic\"><img decoding=\"async\" title=\"Image of modification\" alt=\"Image of modification\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2010\/february\/hey0207\/wes-02-7-10-02.jpg\" width=\"600\" height=\"449\"><\/p>\n<p class=\"Fig-Graphic\">\n<p>&nbsp;<\/p>\n<\/p>\n<p class=\"MsoNormal\">After the change has been made, save the module and use the Copy-Module.ps1 script to install the module. And after the module has been installed, import it and use the <b>Get-Help<\/b> cmdlet to see the results. As seen in the following image, the change was successful. <\/p>\n<p class=\"Fig-Graphic\"><img decoding=\"async\" title=\"Image of successful change\" alt=\"Image of successful change\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2010\/february\/hey0207\/wes-02-7-10-03.jpg\" width=\"600\" height=\"423\"><\/p>\n<p class=\"Fig-Graphic\">\n<p>&nbsp;<\/p>\n<\/p>\n<p class=\"MsoNormal\">We now need to add the <b>Description<\/b> tag to each of the other functions. I use copy and paste to copy the original description from the first function and paste it in each of the other functions. After I have completed the copy-and-paste operations, I go back and edit each one in succession. <\/p>\n<p class=\"MsoNormal\">The next problem that needs to be addressed is the ambiguous data type that is reported for the input parameters. As seen in the following image the <b>feet<\/b> parameter is reported as an <b>&lt;Object&gt;<\/b>, which though true is less than illuminating because everything in Windows PowerShell is an object. Data types that are commonly used are integers and strings are represented as <b>[int]<\/b> and <b>[string]<\/b>, respectively. An integer is a whole number, and when making value conversions from Fahrenheit to Celsius, it is important to be able to use decimal places. What is that data type called? You could open Internet Explorer, navigate over to MSDN, and spend the next 30 minutes or so Binging around trying to arrive at the correct data type. Or you can use the <b>GetType<\/b> method as seen here and quickly arrive at the <b>System.Double<\/b> data type:<\/p>\n<p class=\"CodeBlock\"><span><font face=\"Lucida Sans Typewriter\">PS C:&gt; $a = 1.1111<br \/>PS C:&gt; $a.GetType()<\/p>\n<p>IsPublic IsSerial Name<span>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>BaseType<br \/>&#8212;&#8212;&#8211; &#8212;&#8212;&#8211; &#8212;-<span>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8212;&#8212;&#8211;<br \/>True<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>True<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Double<span>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>System.ValueType<\/p>\n<p>PS C:&gt;<\/p>\n<p><\/font><\/span><\/p>\n<p class=\"MsoNormal\">To use <b>Double<\/b> as a type constraint, you merely place it inside a set of square brackets inside the parameter declaration. This is seen here:<\/p>\n<p class=\"CodeBlock\"><span><font face=\"Lucida Sans Typewriter\">param(<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Parameter(Mandatory = $true,Position = 0,valueFromPipeline=$true)]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Double]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>$feet<br \/>) #end param<\/p>\n<p><\/font><\/span><\/p>\n<p class=\"MsoNormal\">Once again, a copy-and-paste operation is in order to fix the remaining parameter statements. The resulting <b>Get-Help<\/b> output is seen in the following image.<\/p>\n<p class=\"Fig-Graphic\"><img decoding=\"async\" title=\"Image of Get-Help output\" alt=\"Image of Get-Help output\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2010\/february\/hey0207\/wes-02-7-10-04.jpg\" width=\"600\" height=\"413\"><\/p>\n<p class=\"Fig-Graphic\">\n<p>&nbsp;<\/p>\n<\/p>\n<p class=\"MsoNormal\">In the full view of help, you can obtain more information about the input types and output types of the script. The <b>.Inputs<\/b> and the <b>.Outputs<\/b> tags as shown here control these values.<\/p>\n<p class=\"CodeBlock\"><span><font face=\"Lucida Sans Typewriter\"><span>&nbsp;&nbsp; <\/span>.Inputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[double]<br \/><span>&nbsp;&nbsp; <\/span>.Outputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[string]<\/p>\n<p><\/font><\/span><\/p>\n<p class=\"MsoNormal\">After the tags have been added to all the functions, and the modified module is installed and imported, you can use <b>Get-Help<\/b> as seen in the following image.<\/p>\n<p class=\"Fig-Graphic\"><img decoding=\"async\" title=\"Image of using Get-Help\" alt=\"Image of using Get-Help\" src=\"http:\/\/img.microsoft.com\/library\/media\/1033\/technet\/images\/scriptcenter\/qanda\/hsg\/2010\/february\/hey0207\/wes-02-7-10-05.jpg\" width=\"600\" height=\"451\"><\/p>\n<p class=\"Fig-Graphic\">\n<p>&nbsp;<\/p>\n<\/p>\n<p class=\"MsoNormal\">The modified ConversionModuleV2.psm1 module is seen here. <\/p>\n<p class=\"CodeBlockScreenedHead\"><strong>ConversionModuleV2.psm1<\/p>\n<p><\/strong><\/p>\n<p class=\"CodeBlockScreened\"><span><font><font face=\"Lucida Sans Typewriter\">Function ConvertTo-Meters<br \/>{<br \/><span>&nbsp;<\/span>&lt;#<br \/><span>&nbsp; <\/span>.Synopsis<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts feet into meters<br \/><span>&nbsp;&nbsp; <\/span>.Description<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The ConvertTo-Meters function accepts a value in feet and <br \/><span>&nbsp;&nbsp;&nbsp; <\/span>returns a string indicating the number of meters.<br \/><span>&nbsp;&nbsp; <\/span>.Example<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>ConvertTo-Meters 1<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts 1 foot into meters<br \/><span>&nbsp;&nbsp; <\/span>.Parameter feet<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The number of feet to be converted<br \/><span>&nbsp;&nbsp; <\/span>.Inputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[double]<br \/><span>&nbsp;&nbsp; <\/span>.Outputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[string]<br \/><span>&nbsp;&nbsp; <\/span>.Notes<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>NAME:<span>&nbsp; <\/span>ConvertTo-Meters<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>AUTHOR: Ed Wilson<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>LASTEDIT: 1\/31\/2010<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>KEYWORDS: WeekEnd Scripter, Modules, Getting Started<br \/><span>&nbsp;&nbsp; <\/span>.Link<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Http:\/\/www.ScriptingGuys.com<br \/><span>&nbsp;<\/span>#Requires -Version 2.0<br \/><span>&nbsp;<\/span>#&gt;<br \/><span>&nbsp;<\/span>[CmdletBinding()]<br \/><span>&nbsp;<\/span>param(<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Parameter(Mandatory = $true,Position = 0,valueFromPipeline=$true)]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Double]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>$feet<br \/>) #end param<br \/><span>&nbsp; <\/span>&#8220;$feet feet equals $($feet*.31) meters&#8221;<br \/>} #end ConvertTo-Meters<\/p>\n<p>Function ConvertTo-Feet<br \/>{<br \/><span>&nbsp;<\/span>&lt;#<br \/><span>&nbsp; <\/span>.Synopsis<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts meters into feet<br \/><span>&nbsp; <\/span>.Description<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The ConvertTo-Feet function accepts a value in meters and <br \/><span>&nbsp;&nbsp;&nbsp; <\/span>returns a string indicating the number of feet.<br \/><span>&nbsp;&nbsp; <\/span>.Example<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>ConvertTo-Feet 1<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts 1 meter into feet<br \/><span>&nbsp;&nbsp; <\/span>.Parameter meters<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The number of meters to be converted into feet<br \/><span>&nbsp;&nbsp; <\/span>.Inputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[double]<br \/><span>&nbsp;&nbsp; <\/span>.Outputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[string]<br \/><span>&nbsp;&nbsp; <\/span>.Notes<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>NAME:<span>&nbsp; <\/span>ConvertTo-Feet<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>AUTHOR: Ed Wilson<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>LASTEDIT: 1\/31\/2010<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>KEYWORDS: WeekEnd Scripter, Modules, Getting Started<br \/><span>&nbsp;&nbsp; <\/span>.Link<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Http:\/\/www.ScriptingGuys.com<br \/><span>&nbsp;<\/span>#Requires -Version 2.0<br \/><span>&nbsp;<\/span>#&gt;<br \/><span>&nbsp;<\/span>[CmdletBinding()]<br \/><span>&nbsp;<\/span>param(<br \/><span>&nbsp;<\/span><span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Parameter(Mandatory = $true,Position = 0,valueFromPipeline=$true)]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Double]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>$meters<br \/>) #end param<br \/><span>&nbsp;<\/span>&#8220;$meters meters equals $($meters * 3.28) feet&#8221;<br \/>} #end ConvertTo-Feet<\/p>\n<p>Function ConvertTo-Fahrenheit<br \/>{<br \/><span>&nbsp;<\/span>&lt;#<br \/><span>&nbsp; <\/span>.Synopsis<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts celsius into fahrenheit<br \/><span>&nbsp; <\/span>.Description<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The ConvertTo-Fahrenheit function accepts a value in celsius and <br \/><span>&nbsp;&nbsp;&nbsp; <\/span>returns a string indicating the temperature in Fahrenheit.<br \/><span>&nbsp;&nbsp; <\/span>.Example<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>ConvertTo-Fahrenheit 1<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts 1 degree celsius into fahrenheit<br \/><span>&nbsp;&nbsp; <\/span>.Parameter celsius<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The<span>&nbsp; <\/span>temperature to be converted into fahrenheit<br \/><span>&nbsp;&nbsp; <\/span>.Inputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[double]<br \/><span>&nbsp;&nbsp; <\/span>.Outputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[string]<br \/><span>&nbsp;&nbsp; <\/span>.Notes<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>NAME:<span>&nbsp; <\/span>ConvertTo-Fahrenheit<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>AUTHOR: Ed Wilson<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>LASTEDIT: 1\/31\/2010<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>KEYWORDS: WeekEnd Scripter, Modules, Getting Started<br \/><span>&nbsp;&nbsp; <\/span>.Link<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Http:\/\/www.ScriptingGuys.com<br \/><span>&nbsp;<\/span>#Requires -Version 2.0<br \/><span>&nbsp;<\/span>#&gt;<br \/><span>&nbsp;<\/span>[CmdletBinding()]<br \/><span>&nbsp;<\/span>param(<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Parameter(Mandatory = $true,Position = 0,valueFromPipeline=$true)]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Double]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>$celsius<br \/>) #end param<br \/><span>&nbsp;<\/span>&#8220;$celsius celsius equals $((1.8 * $celsius) + 32 ) fahrenheit&#8221;<br \/>} #end ConvertTo-Fahrenheit<\/p>\n<p>Function ConvertTo-celsius<br \/>{<br \/><span>&nbsp;<\/span>&lt;#<br \/><span>&nbsp; <\/span>.Synopsis<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts fahrenheit into celsius<br \/><span>&nbsp; <\/span>.Description<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The ConvertTo-Celsius function accepts a value in fahrenheit and <br \/><span>&nbsp;&nbsp;&nbsp; <\/span>returns a string indicating the temperature in celsius.<br \/><span>&nbsp;&nbsp; <\/span>.Example<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>ConvertTo-Celsius 1<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts 1 degree fahrenheit into celsius<br \/><span>&nbsp;&nbsp; <\/span>.Parameter fahrenheit<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The<span>&nbsp; <\/span>temperature to be converted<br \/><span>&nbsp;&nbsp; <\/span>.Inputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[double]<br \/><span>&nbsp;&nbsp; <\/span>.Outputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[string]<br \/><span>&nbsp;&nbsp; <\/span>.Notes<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>NAME:<span>&nbsp; <\/span>ConvertTo-Celsius<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>AUTHOR: Ed Wilson<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>LASTEDIT: 1\/31\/2010<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>KEYWORDS: WeekEnd Scripter, Modules, Getting Started<br \/><span>&nbsp;&nbsp; <\/span>.Link<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Http:\/\/www.ScriptingGuys.com<br \/><span>&nbsp;<\/span>#Requires -Version 2.0<br \/><span>&nbsp;<\/span>#&gt;<br \/><span>&nbsp;<\/span>[CmdletBinding()]<br \/><span>&nbsp;<\/span>param(<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Parameter(Mandatory = $true,Position = 0,valueFromPipeline=$true)]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Double]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>$fahrenheit<br \/>) #end param<br \/><span>&nbsp;<\/span>&#8220;$fahrenheit fahrenheit equals $( (($fahrenheit &#8211; 32)\/9)*5 ) celsius&#8221;<br \/>} #end ConvertT-ocelsius<\/p>\n<p>Function ConvertTo-Miles<br \/>{<br \/><span>&nbsp;<\/span>&lt;#<br \/><span>&nbsp; <\/span>.Synopsis<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts kilometers into miles<br \/><span>&nbsp; <\/span>.Description<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The ConvertTo-Miles function accepts a value in kilometers and <br \/><span>&nbsp;&nbsp;&nbsp; <\/span>returns a string indicating the distance in miles.<br \/><span>&nbsp;&nbsp; <\/span>.Example<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>ConvertTo-Miles<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts 1 kilometer into miles<br \/><span>&nbsp;&nbsp; <\/span>.Parameter kilometer<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The distance to be converted<br \/><span>&nbsp;&nbsp; <\/span>.Inputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[double]<br \/><span>&nbsp;&nbsp; <\/span>.Outputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[string]<br \/><span>&nbsp;&nbsp; <\/span>.Notes<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>NAME:<span>&nbsp; <\/span>ConvertTo-Miles<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>AUTHOR: Ed Wilson<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>LASTEDIT: 1\/31\/2010<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>KEYWORDS: WeekEnd Scripter, Modules, Getting Started<br \/><span>&nbsp;&nbsp; <\/span>.Link<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Http:\/\/www.ScriptingGuys.com<br \/><span>&nbsp;<\/span>#Requires -Version 2.0<br \/><span>&nbsp;<\/span>#&gt;<br \/><span>&nbsp;<\/span>[CmdletBinding()]<br \/><span>&nbsp;<\/span>param(<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Parameter(Mandatory = $true,Position = 0,valueFromPipeline=$true)]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Double]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>$kilometer<br \/>) #end param<br \/><span>&nbsp; <\/span>&#8220;$kilometer kilometers equals $( ($kilometer *.6211) ) miles&#8221;<br \/>} #end convertToMiles<\/p>\n<p>Function ConvertTo-Kilometers<br \/>{<br \/><span>&nbsp;<\/span>&lt;#<br \/><span>&nbsp; <\/span>.Synopsis<br \/><span>&amp;nbsp\n;&nbsp;&nbsp; <\/span>Converts miles into Kilometers<br \/><span>&nbsp; <\/span>.Description<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The ConvertTo-Kilometers function accepts a value in miles and <br \/><span>&nbsp;&nbsp;&nbsp; <\/span>returns a string indicating the distance in kilometers.<br \/><span>&nbsp;&nbsp; <\/span>.Example<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>ConvertTo-Kilometers 1<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>Converts 1 mile into kilometers<br \/><span>&nbsp;&nbsp; <\/span>.Parameter miles<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>The distance to be converted<br \/><span>&nbsp;&nbsp; <\/span>.Inputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[double]<br \/><span>&nbsp;&nbsp; <\/span>.Outputs<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>[string]<br \/><span>&nbsp;&nbsp; <\/span>.Notes<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>NAME:<span>&nbsp; <\/span>ConvertTo-Kilometers<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>AUTHOR: Ed Wilson<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>LASTEDIT: 1\/31\/2010<br \/><span>&nbsp;&nbsp;&nbsp; <\/span>KEYWORDS: WeekEnd Scripter, Modules, Getting Started<br \/><span>&nbsp;&nbsp; <\/span>.Link<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Http:\/\/www.ScriptingGuys.com<br \/><span>&nbsp;<\/span>#Requires -Version 2.0<br \/><span>&nbsp;<\/span>#&gt;<br \/><span>&nbsp;<\/span>[CmdletBinding()]<br \/><span>&nbsp;<\/span>param(<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Parameter(Mandatory = $true,Position = 0,valueFromPipeline=$true)]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>[Double]<br \/><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>$miles<br \/>) #end param<br \/><span>&nbsp; <\/span>&#8220;$miles miles equals $( ($miles * 1.61) ) kilometers&#8221;<br \/>} #end convertTo-Kilometers<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\">If you want to know exactly what we will be covering in the coming week, follow us on <a href=\"http:\/\/bit.ly\/scriptingguystwitter\" target=\"_blank\">Twitter<\/a> and <span><a href=\"http:\/\/bit.ly\/scriptingguysfacebook\">Facebook<\/a><\/span>. If you have any questions, send e-mail to us at <a href=\"http:\/\/blogs.technet.commailto:scripter@microsoft.com\" target=\"_blank\"><font face=\"Segoe\">scripter@microsoft.com<\/font><\/a> or post your questions on the <a href=\"http:\/\/bit.ly\/scriptingforum\" target=\"_blank\">Official Scripting Guys Forum<\/a>. See you tomorrow. Until then, peace.<br \/><span><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p><b><span>Ed Wilson and Craig Liebendorfer, Scripting Guys<\/p>\n<p><\/span><\/b><\/p>\n<p class=\"MsoNormal\"><span><\/p>\n<p><\/span><\/p>\n<p><span><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Microsoft Scripting Guy Ed Wilson here. One of the cool things about writing scripts on the weekend, is the lack of distraction. Because there are few things to compete for one&rsquo;s attention, there is more time to polish and more time to clean up the code. For example, consider the ConversionModule.psm1 module I worked [&hellip;]<\/p>\n","protected":false},"author":595,"featured_media":87096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[51,52,3,4,61,45],"class_list":["post-51373","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripting","tag-getting-started","tag-modules","tag-scripting-guy","tag-scripting-techniques","tag-weekend-scripter","tag-windows-powershell"],"acf":[],"blog_post_summary":"<p>&nbsp; Microsoft Scripting Guy Ed Wilson here. One of the cool things about writing scripts on the weekend, is the lack of distraction. Because there are few things to compete for one&rsquo;s attention, there is more time to polish and more time to clean up the code. For example, consider the ConversionModule.psm1 module I worked [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/51373","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/users\/595"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/comments?post=51373"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/posts\/51373\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media\/87096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/media?parent=51373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/categories?post=51373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/scripting\/wp-json\/wp\/v2\/tags?post=51373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}