<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://powershell.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results for 'app:weblogs' matching tags 'guest blogger' and 'modules'</title><link>http://powershell.com/cs/search/SearchResults.aspx?q=app:weblogs&amp;tag=guest+blogger,modules&amp;orTags=0&amp;o=DateDescending</link><description>Search results for 'app:weblogs' matching tags 'guest blogger' and 'modules'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 (Build: 30929.2835)</generator><item><title>Closures in PowerShell</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2013/04/05/closures-in-powershell.aspx</link><pubDate>Fri, 05 Apr 2013 05:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:22614</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&lt;strong style="font-size:12px;"&gt;Summary&lt;/strong&gt;&lt;span style="font-size:12px;"&gt;: Bruce Payette talks about Windows PowerShell closures and how to call the &lt;strong&gt;G&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;etNewClosure&lt;/strong&gt;&lt;span style="font-size:12px;"&gt; method.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Microsoft Scripting Guy, Ed Wilson, is here. This week we will not have our usual &lt;strong&gt;PowerTip&lt;/strong&gt;. Instead we have excerpts from seven books from Manning Press. In addition, each blog will have a special code for 50% off the book being excerpted that day. Remember that the code is valid only for the day the excerpt is posted. The coupon code is also valid for a second book from the Manning collection.&lt;/p&gt;
&lt;p class="Body" align="left"&gt;This excerpt is from &lt;a href="http://www.manning.com/payette2/" target="_blank"&gt;Windows PowerShell in Action&lt;/a&gt;&lt;br /&gt;&amp;nbsp; By &lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/tags/bruce+payette/" target="_blank"&gt;Bruce Payette&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/2086.hsg_2D00_4_2D00_5_2D00_13_2D00_1.png"&gt;&lt;img style="border:0px currentColor;" title="Photo of book cover" src="http://blogs.technet.com/resized-image.ashx/__size/150x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/2086.hsg_2D00_4_2D00_5_2D00_13_2D00_1.png" alt="Photo of book cover" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="Body1" align="left"&gt;&lt;span style="font-size:small;"&gt;Windows PowerShell uses dynamic modules to create dynamic closures. A closure in computer science terms (at least as defined in Wikipedia) is &amp;ldquo;a function that is evaluated in an environment containing one or more bound variables.&amp;rdquo; A bound variable is, for our purposes, a variable that exists and has a value. The environment in our case is the dynamic module. Finally, the function is simply a script block. In effect, a closure is the inverse of an object. An object is data with methods (functions) attached to that data. A closure is a function with data attached to that method.&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;The best way to understand what all this means is to look at an example. You&amp;rsquo;ll use closures to create a set of counter functions. The advantage closures give you over plain functions is that you can change what increment to use after the counter function has been defined. Here&amp;rsquo;s the basic function:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;function New-Counter ($increment=1)&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $count=0;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $script:count += $increment&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $count&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }.GetNewClosure()&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body1" align="left"&gt;&lt;span style="font-size:small;"&gt;There&amp;rsquo;s nothing you haven&amp;rsquo;t seen so far&amp;mdash;you create a variable and then a script block that increments that variable&amp;mdash;except for returning the result of the call to the &lt;strong style="font-size:12px;"&gt;Get-NewClosure()&lt;/strong&gt; method. Let&amp;rsquo;s try this function to see what it does. First, create a counter:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (1) &amp;gt; $c1 = New-Counter&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (2) &amp;gt; $c1.GetType().FullName&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;System.Management.Automation.ScriptBlock&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body1" align="left"&gt;&lt;span style="font-size:small;"&gt;Looking at the type of the object returned, you see that it&amp;rsquo;s a script block, so you use the &lt;strong&gt;&amp;amp;&lt;/strong&gt; operator to invoke it:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (3) &amp;gt; &amp;amp; $c1&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;1&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (4) &amp;gt; &amp;amp; $c1&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;2&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body1" align="left"&gt;&lt;span style="font-size:small;"&gt;The script block works as you&amp;rsquo;d expect a counter to work. Each invocation returns the next number in the sequence. Now, create a second counter, but this time set the increment to &lt;strong style="font-size:12px;"&gt;2&lt;/strong&gt;:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (5) &amp;gt; $c2 = New-Counter 2&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;Invoke the second counter scriptblock:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (6) &amp;gt; &amp;amp; $c2&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;2&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (7) &amp;gt; &amp;amp; $c2&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;4&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (8) &amp;gt; &amp;amp; $c2&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;6&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;It counts up by 2. But what about the first counter?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (9) &amp;gt; &amp;amp; $c1&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;3&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (10) &amp;gt; &amp;amp; $c1&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;4&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;The first counter continues to increment by 1, unaffected by the second counter. So the key thing to notice is that each counter instance has its own copies of the &lt;strong style="font-size:12px;"&gt;$count&lt;/strong&gt; and &lt;strong style="font-size:12px;"&gt;$increment&lt;/strong&gt; variables. When a new closure is created, a new dynamic module is created, and then all the variables in the caller&amp;rsquo;s scope are copied into this new module.&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;Here are more examples of working with closures to give you an idea of how flexible the mechanism is. First, you&amp;rsquo;ll create a new closure by using a &lt;strong&gt;param&lt;/strong&gt; block to set the bound variable &lt;strong&gt;$x&lt;/strong&gt;. This is essentially the same as the previous example, except that you&amp;rsquo;re using a script block to establish the environment for the closure instead of a named function:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (11) &amp;gt; $c = &amp;amp; {param ($x) {$x+$x}.GetNewClosure()} 3.1415&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;Now evaluate the newly created closed script block:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (12) &amp;gt; &amp;amp; $c&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;6.283&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;This evaluation returns the value of the parameter added to itself. Because closures are implemented by using dynamic modules, you can use mechanisms to manipulate the state of a closure. You can do this by accessing the module object attached to the script block. You&amp;rsquo;ll use this object to reset the module variable &lt;strong style="font-size:12px;"&gt;$x&lt;/strong&gt; by evaluating &lt;strong style="font-size:12px;"&gt;Set-Variable&lt;/strong&gt; (&lt;strong style="font-size:12px;"&gt;sv&lt;/strong&gt;) in the closure&amp;rsquo;s module context:&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (13) &amp;gt; &amp;amp; $c.Module Set-Variable x &amp;quot;Abc&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;Now evaluate the script block to verify that it&amp;rsquo;s been changed:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (14) &amp;gt; &amp;amp; $c&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;AbcAbc&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body1" align="left"&gt;&lt;span style="font-size:small;"&gt;Next, create another script block closed over the same module as the first one. You can do this by using the &lt;strong&gt;NewBoundScriptBlock()&lt;/strong&gt; method on the module to create a new script block that is attached to the module associated with the original script block:&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (15) &amp;gt; $c2 = $c.Module.NewBoundScriptBlock({&amp;quot;x ia $x&amp;quot;})&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Execute the new script block to verify that it&amp;rsquo;s using the same &lt;strong style="font-size:12px;"&gt;$x&lt;/strong&gt;:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (16) &amp;gt; &amp;amp; $c2&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;x ia Abc&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;Now use &lt;strong style="font-size:12px;"&gt;$c2.module&lt;/strong&gt; to update the shared variable:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (17) &amp;gt; &amp;amp; $c2.module sv x 123&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (18) &amp;gt; &amp;amp; $c2&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;x ia 123&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;And verify that it&amp;rsquo;s also changed for the original closed script block:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (19) &amp;gt; &amp;amp; $c&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;246&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body1" align="left"&gt;&lt;span style="font-size:small;"&gt;Finally, create a named function from the script block by using the function provider:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (20) &amp;gt; $function:myfunc = $c&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;And verify that calling the function by name works:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (21) &amp;gt; myfunc&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;246&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body1" align="left"&gt;&lt;span style="font-size:small;"&gt;Set the closed variable yet again, but use &lt;strong&gt;$c2&lt;/strong&gt; to access the module this time:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (22) &amp;gt; &amp;amp; $c2.Module sv x 3&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body1" align="left"&gt;&lt;span style="font-size:small;"&gt;Verify that it&amp;rsquo;s changed when you call the named function:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;PS (23) &amp;gt; myfunc&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code" style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;6&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;These examples should give you an idea about how all of these pieces&amp;mdash;script blocks, modules, closures, and functions&amp;mdash;are related. This is how modules work. When a module is loaded, the exported functions are closures bound to the module object that was created. These closures are assigned to the names for the functions to import. A fairly small set of types and concepts allow you to achieve advanced programming scenarios.&lt;/span&gt;&lt;/p&gt;
&lt;p class="Body" align="left"&gt;&lt;span style="font-size:small;"&gt;~Bruce&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="font-size:small;"&gt;&lt;strong&gt;Here is the code for the discount offer today at &lt;/strong&gt;&lt;a href="http://www.manning.com/" target="_blank"&gt;www.manning.com&lt;/a&gt;: &lt;strong&gt;scriptw5&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;"&gt; Valid for 50% off &lt;a href="http://www.manning.com/payette2/" target="_blank"&gt;PowerShell in Action&lt;/a&gt; and &lt;a href="http://www.manning.com/wilen/" target="_blank"&gt;SharePoint Web Parts in Action&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:small;"&gt; Offer valid from April 5, 2013 12:01 AM until April 6, midnight (EST)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;I invite you to follow me on &lt;a href="http://bit.ly/scriptingguystwitter" target="_blank"&gt;Twitter&lt;/a&gt; and &lt;a href="http://bit.ly/scriptingguysfacebook" target="_blank"&gt;Facebook&lt;/a&gt;. If you have any questions, send email to me at &lt;a href="mailto:scripter@microsoft.com" target="_blank"&gt;scripter@microsoft.com&lt;/a&gt;, or post your questions on the &lt;a href="http://bit.ly/scriptingforum" target="_blank"&gt;Official Scripting Guys Forum&lt;/a&gt;. See you tomorrow. Until then, peace.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;strong&gt;Ed Wilson, Microsoft Scripting Guy&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3563518" width="1" height="1" alt="" /&gt;</description></item><item><title>Automate Facebook with a Free PowerShell Module</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2011/08/15/automate-facebook-with-a-free-powershell-module.aspx</link><pubDate>Mon, 15 Aug 2011 05:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:11849</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&lt;b&gt;Summary&lt;/b&gt;: Guest Blogger Jon Newman shows how to automate Facebook with a free Windows PowerShell module.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Microsoft Scripting Guy Ed Wilson here. It&amp;rsquo;s Guest Blogger Week! Today, we have Jon Newman from Microsoft who is going to talk to us about his new Windows PowerShell Facebook module. Take it away, Jon.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks to Ed Wilson for giving me space on the Hey, Scripting Guy! Blog!&lt;/p&gt;
&lt;p&gt;My name is Jon Newman, and I&amp;rsquo;m an old hand at Windows PowerShell. I was on the Windows PowerShell 1.0 team, with Bruce and Jim and all the rest. My primary responsibility was for pipeline execution and error handling. Someday I should write a blog entry on &lt;b&gt;FullyQualifiedErrorId&lt;/b&gt;, but that is for another time. I started at Microsoft in September 1989, and I have been writing management UI for Windows Server for 20 years. The Facebook project doesn&amp;rsquo;t actually have anything to do with Microsoft though.&lt;/p&gt;
&lt;p&gt;A few years ago, I joined the board of &lt;a href="http://hilleluw.org/"&gt;Hillel at the University of Washington&lt;/a&gt;. Like many other businesses and organizations, they use Facebook extensively to interact with program participants and backers. I was struck, however, by the lack of the sort of automation commonly used to manage other mission-critical IT. I looked around and did not find anything usable in this space, although there are a &lt;a href="http://code.msdn.microsoft.com/PowerShellPowerBook"&gt;couple&lt;/a&gt; &lt;a href="http://powergui.org/entry.jspa?externalID=2034&amp;amp;categoryID=56"&gt;other&lt;/a&gt; mostly obsolete Windows PowerShell integration projects. So I decided to jump in. This is my first open source project and I am sure I have a lot to learn.&lt;/p&gt;
&lt;p&gt;First, my &lt;a href="http://facebookitmanifesto.com/"&gt;Facebook IT Manifesto&lt;/a&gt; motivating this project: Facebook is today mission-critical to many organizations&amp;rsquo; customer relationships, as significant as are email and web presence. Therefore, such organizations should manage their Facebook presence with the same IT rigor as other mission-critical technologies such as email and websites. I assert in particular that:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;An organization&amp;rsquo;s Facebook presence must be under ultimate administrative control of the organization itself, and not any particular employees. Customer relationships within Facebook must carry forward as employees leave, enter, and change roles within the organization.&lt;/li&gt;
&lt;li&gt;An organization must be able to manage its customer relationships within Facebook members in conjunction with other means of contacting the same customers.&lt;/li&gt;
&lt;li&gt;An organization must be able to automate routine management of their Facebook presence.&lt;/li&gt;
&lt;li&gt;An organization must document its formal Facebook processes with the same rigor as its formal processes for other elements of IT.&lt;/li&gt;
&lt;li&gt;Where social networking technologies other than Facebook have similar importance to an organization, the same applies to them as well.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a partial answer to need #3, I offer the &lt;a href="http://facebookpsmodule.codeplex.com/"&gt;Facebook PowerShell Module&lt;/a&gt;. This technology (still in alpha at this writing) enables organizations to automate and integrate Facebook using Windows PowerShell.&lt;/p&gt;
&lt;p&gt;Let us dive right into some examples, and talk theory later:&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS C:\Windows\system32&amp;gt; get-fbobjectdata&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;email&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : jonn_msft_testuser@hotmail.com&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 100002097205662&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;last_name&amp;nbsp;&amp;nbsp;&amp;nbsp; : NewmanTest&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : JonTest NewmanTest&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;first_name&amp;nbsp;&amp;nbsp; : JonTest&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;languages&amp;nbsp;&amp;nbsp;&amp;nbsp; : {@{id=106059522759137; name=English}, @{id=105673612800327; name&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =German}}&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;link&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : http://www.facebook.com/profile.php?id=100002097205662&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;locale&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : en_US&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;timezone&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : -7&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;updated_time : 2011-05-29T15:04:10+0000&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;birthday&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 06/30/1964&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;gender&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : male&lt;/p&gt;
&lt;p&gt;OK, so I&amp;rsquo;ve skipped a step. You first need to run &lt;b&gt;New-FBConnection&lt;/b&gt; from the Windows PowerShell ISE, which grants permission to access your Facebook account. If you forget, the module will talk you through it, but if you need the details, go to this webpage.&lt;/p&gt;
&lt;p&gt;If you do not specify which Facebook object you want to know about, the default is you. This is my test account and the default list of fields.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS C:\Windows\system32&amp;gt; get-fbobjectdata -fields languages&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="text-decoration:underline;"&gt;Id&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="text-decoration:underline;"&gt;languages&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;100002097205662&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {@{id=106059522759137; name=English}...&lt;/p&gt;
&lt;p&gt;If you want fields other than the default fields, see &lt;a href="http://developers.facebook.com/docs/reference/api/user/"&gt;Facebook&amp;rsquo;s documentation&lt;/a&gt;. In this case, we requested the nondefault information &amp;ldquo;languages.&amp;rdquo;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS C:\Windows\system32&amp;gt; get-fbfriends&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="text-decoration:underline;"&gt;Id&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="text-decoration:underline;"&gt;name&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;lt;number&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Matthew &amp;lt;name&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;lt;number&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mikael &amp;lt;name&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;lt;number&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Naomi &amp;lt;name&amp;gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;lt;number&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Jon &amp;lt;name&amp;gt;&lt;/p&gt;
&lt;p&gt;Facebook data is basically a gigantic relational database. You are an object, you can have lots of fields, and the fields can be references to other objects. In this case, you are asking for the list of objects in your Friends list.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;PS C:\Windows\system32&amp;gt; get-fbfriends -fields gender | group gender&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;span style="text-decoration:underline;"&gt;Count&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="text-decoration:underline;"&gt;Name&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="text-decoration:underline;"&gt;Group&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; male&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {@{id=604652494; gender=male}, @{id=67396290&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; female&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {@{id=1022311059; gender=female}}&lt;/p&gt;
&lt;p&gt;Because this is Windows PowerShell, you get all the goodness of its standard commands such as &lt;b&gt;Where&lt;/b&gt;, &lt;b&gt;Select&lt;/b&gt;, and &lt;b&gt;Group&lt;/b&gt;.&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;function Backup-FBFriends&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;{&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $timeString = $(get-date) $dateTime.ToString(&amp;quot;yyyy-MM-dd-HH-mm-ss&amp;quot;)&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $filename = &amp;quot;c:\temp\friends.$timeString.csv&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; write-verbose &amp;quot;Backing up friends list to $filename&amp;quot;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $friends = Get-FBFriends&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userdata = $friends | Get-FBObjectData&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $userdata | Export-Csv $filename&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;}&lt;/p&gt;
&lt;p&gt;The preceding code is a more sophisticated example (part of &lt;a href="http://facebookpsmodule.codeplex.com/SourceControl/changeset/view/8836#72454"&gt;FacebookExamples.ps1&lt;/a&gt; that comes with FacebookPSModule). This script automatically backs up your Friends list to a CSV file in c:\temp. It&amp;rsquo;s the sort of thing you could run in a scheduled task, so you can monitor changes over time.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The final example is the &lt;b&gt;Write-EventAttendeeCsv&lt;/b&gt; script (also in &lt;a href="http://facebookpsmodule.codeplex.com/SourceControl/changeset/view/8836#72454"&gt;FacebookExamples.ps1&lt;/a&gt;). I have this running in a scheduled task at the client site. It&amp;rsquo;s a little too long to reproduce here, but it&amp;rsquo;s a good example of what you can accomplish with FacebookPSModule. The script does the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Gets the list of all events associated with a particular group.&lt;/li&gt;
&lt;li&gt;Filters to those events in the upcoming week.&lt;/li&gt;
&lt;li&gt;Extracts the RSVP list for those events.&lt;/li&gt;
&lt;li&gt;Writes an attendee list file for each event to the temp directory.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This way, program staff can print out an attendee list before the event, based on RSVPs for the Facebook event.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So, is FacebookPSModule right for you? In theory, you could use this to automate anything you can do using the Facebook website. The reality isn&amp;rsquo;t quite so simple.&lt;/p&gt;
&lt;p&gt;First, there are a few things that Facebook doesn&amp;rsquo;t let you do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can&amp;rsquo;t read the list of your friends&amp;rsquo; friends. I think this is on purpose&amp;mdash;Facebook just decided that allowing Facebook applications to do this is this too much of a privacy risk. As far as Facebook is concerned, FacebookPSModule is a Facebook application, even when you&amp;rsquo;re just accessing your own data.&lt;/li&gt;
&lt;li&gt;You can&amp;rsquo;t write status messages that link pages such as @Microsoft. I think this is just an oversight in the API.&lt;/li&gt;
&lt;li&gt;You can link photos, but you can&amp;rsquo;t link directly to other users&amp;rsquo; photos in Facebook&amp;rsquo;s CDN (for example, photos in other users&amp;rsquo; albums). This is permitted from the website but not from the API.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I will probably discover more issues as I fill out and explore the module&amp;rsquo;s capabilities.&lt;/p&gt;
&lt;p&gt;More importantly, users should be aware that the Facebook API churns fast, especially the authentication stack. Their interfaces from two years ago are already deprecated and largely broken. You&amp;rsquo;ll have to keep an eye on your automation to make sure it is working properly.&lt;/p&gt;
&lt;p&gt;FacebookPSModule stores your Facebook access token by default (encrypted using DPAPI via &lt;b&gt;ConvertFrom-SecureString&lt;/b&gt;) in your user profile, which is why subsequent commands including scheduled tasks can read it. You should think about security for your user profile, because anyone with access to the access token can perform Facebook tasks against your account. In the worst-case scenario:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On Facebook.com, click &lt;b&gt;Account&lt;/b&gt;, and then click &lt;b&gt;Privacy Settings&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Under &lt;b&gt;Apps and Websites&lt;/b&gt;, click &lt;b&gt;Edit your settings&lt;/b&gt;. Under &lt;b&gt;Apps you use&lt;/b&gt;, click &lt;b&gt;Edit Settings&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;For &lt;b&gt;Test Application jonn_msft&lt;/b&gt; (or whichever AppId you used), click &lt;b&gt;Edit&lt;/b&gt;. On the next page, click &lt;b&gt;Remove app&lt;/b&gt; to revoke permissions for the application, including its access token.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Finally, most important of all, FacebookPSModule is (as of August 15, 2011) only in alpha. There are plenty of known issues, including issues with large data sets. I will probably change the cmdlet names and signatures as I learn more about this space.&lt;/p&gt;
&lt;p&gt;FacebookPSModule is really a thin layer over the &lt;a href="http://facebooksdk.codeplex.com/"&gt;Facebook C# SDK&lt;/a&gt;, which is itself a thin layer over the &lt;a href="http://developers.facebook.com/docs/reference/api/"&gt;Facebook Graph API&lt;/a&gt;. When you run &lt;b&gt;New-FBConnection&lt;/b&gt;, you are requesting an OAuth 2.0 access token for an application I registered. The application doesn&amp;rsquo;t really exist, and you can use another application ID if you like; you just have to specify an application ID to get the access token.&lt;/p&gt;
&lt;p&gt;I could share some war stories about developing this, in particular about supporting .NET Framework 4.0 and converting .NET Dynamic Objects to Windows PowerShell. If there is enough interest, I will write a follow-up blog entry.&lt;/p&gt;
&lt;p&gt;What I need from you are more real-world scenarios. Tell me what you want to do, and I can make sure FacebookPSModule does it well. If you want to help with the development, please do! &lt;a href="http://facebookpsmodule.codeplex.com/discussions"&gt;http://facebookpsmodule.codeplex.com/discussions&lt;/a&gt; is the place to talk.&lt;/p&gt;
&lt;p&gt;Happy Facebooking!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you, Jon, for writing a really cool Facebook module, and for taking the time to share your experience with us.&lt;/p&gt;
&lt;p&gt;Join us tomorrow for day 2 of Guest Blogger Week when Trevor Sullivan will be our guest.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I invite you to follow me on &lt;a href="http://bit.ly/scriptingguystwitter" target="_blank"&gt;Twitter&lt;/a&gt; and &lt;a href="http://bit.ly/scriptingguysfacebook"&gt;Facebook&lt;/a&gt;. If you have any questions, send email to me at &lt;a href="mailto:scripter@microsoft.com" target="_blank"&gt;scripter@microsoft.com&lt;/a&gt;, or post your questions on the &lt;a href="http://bit.ly/scriptingforum" target="_blank"&gt;Official Scripting Guys Forum&lt;/a&gt;. See you tomorrow. Until then, peace.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ed Wilson, Microsoft Scripting Guy&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3445834" width="1" height="1" alt="" /&gt;</description></item><item><title>Handle Formatted Output in PowerShell</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2011/05/13/handle-formatted-output-in-powershell.aspx</link><pubDate>Fri, 13 May 2011 05:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:10387</guid><dc:creator>Anonymous</dc:creator><description>&lt;p&gt;&lt;b&gt;Summary&lt;/b&gt;: Microsoft Windows PowerShell MVP, Doug Finke, illustrates how to handle formatted output in a Windows PowerShell script.&lt;/p&gt;
&lt;p&gt;Microsoft Scripting Guy, Ed Wilson, is here. Doug Finke is our guest blogger.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18-metablogapi/5468.Doug_2D00_Finke_5F00_2E2048E9.png"&gt;&lt;img height="175" width="154" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18-metablogapi/1830.Doug_2D00_Finke_5F00_thumb_5F00_2D47E2FF.png" alt="Photo of Doug Finke" border="0" title="Photo of Doug Finke" style="background-image:none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Doug Finke is a Microsoft PowerShell MVP working for Lab49, a company that builds advanced applications for the financial service industry. Over the last 20 years, Doug has been a developer and author working with numerous technologies. You can catch up with Doug on his blog.&lt;/p&gt;
&lt;p&gt;Doug&amp;#39;s contact information: &lt;br /&gt;Blog: &lt;a target="_blank" href="http://www.dougfinke.com/blog"&gt;Development in a Blink: Researching the optimal; implementing the practical&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are four Windows PowerShell cmdlets that handle formatting.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="line-height:normal;list-style-type:disc;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-Command format* -CommandType cmdlet&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table cellpadding="0" cellspacing="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Format-Custom&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Formats the output of a command as defined in an alternate view&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Format-List&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Formats the output of a command as a list of properties in which each property is displayed on a separate line&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Format-Table&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Formats the output of a command as a table with the selected properties of the object in each column&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;strong&gt;Format-Wide&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;Formats objects as a wide table that displays only one property of each object&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;At the command line, these cmldlets are super helpful. I pipe Windows PowerShell output to &lt;b&gt;Format-Table &amp;ndash;Autosize ( ft &amp;ndash;a )&lt;/b&gt; all the time. Here is a &lt;b&gt;Format-Table&lt;/b&gt; nicety that uses wild cards:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-Process | select -First 5&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;| ft -a name, *paged*mem*size&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And here is the output.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Name&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NonpagedSystemMemorySize PagedMemorySize PagedSystemMemorySize PeakPagedMemorySize&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;----&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;------------------------ --------------- --------------------- -------------------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;tab-stops:358.25pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;chrome&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;19800&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;54726656&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;166860&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;75530240&lt;/span&gt;&lt;span style="mso-tab-count:1;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;chrome&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;24372&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;66035712&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;312252&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;81887232&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;chrome&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;12720&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;55017472&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;167940&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;90001408&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;conhost&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;3420&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1032192&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;110476&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1060864&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:normal;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;conhost&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;3480&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1810432&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;110948&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1835008&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;The impact&lt;/h3&gt;
&lt;p&gt;The challenge: Although this is great, and it makes working with output quick and easy, it has a negative impact on your scripts and functions that you provide to others.&lt;/p&gt;
&lt;p&gt;Take this line of Windows PowerShell script. It prints 1 through 5 to the console, simple and problem free.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;1..5 | Format-Table&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now, double each element.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="line-height:normal;list-style-type:disc;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;1..5 | Format-Table | foreach { $_ * 2 }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I get the following error message:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Method invocation failed because [Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData] doesn&amp;#39;t contain a method named &amp;#39;op_Multiply&amp;#39;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;At line:3 char:37&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;+ 1..5 | Format-Table | foreach { $_ * &amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;2}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;+ CategoryInfo&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;: InvalidOperation: (op_Multiply:String) [], RuntimeException&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;+ FullyQualifiedErrorId : MethodNotFound&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is what users of my scripts and functions will encounter if they try to further act on the output of utilities if I use a &lt;b&gt;Format*&lt;/b&gt; cmdlet to output results.&lt;/p&gt;
&lt;h3&gt;Why, and how do I fix it?&lt;/h3&gt;
&lt;p&gt;First, I want to find out what is the output from &lt;b&gt;Format-Table&lt;/b&gt;. I pipe it to &lt;b&gt;Get-Member&lt;/b&gt;. Here are the results:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 8pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;1..5 | Format-Table | Get-Member&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;TypeName: Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;Name&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MemberType Definition&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;----&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;---------- ----------&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;Equals&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Method&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bool Equals(System.Object obj)&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;GetHashCode&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Method&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;int GetHashCode()&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;GetType&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Method&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;type GetType()&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;ToString&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Method&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;string ToString()&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;ClassId2e4f51ef21dd47e99d3c952918aff9cd Property&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.String ClassId2e4f51ef21dd47e99d3c952918aff9cd {get;}&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;formatEntryInfo&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Property&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Microsoft.PowerShell.Commands.Internal.Format.FormatEntryInfo formatEntryInfo {get;set;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;outOfBand&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Property&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.Boolean outOfBand {get;set;}&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;writeErrorStream&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Property&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;System.Boolean writeErrorStream {get;set;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This explains why I get errors when I try to multiply the items by 2 when I pipe it to the &lt;b&gt;foreach&lt;/b&gt;. The &lt;b&gt;FormatEntryData&lt;/b&gt; doesn&amp;rsquo;t contain a method &lt;b&gt;op_Multiply&lt;/b&gt;. Windows PowerShell attempts to multiply &lt;b&gt;FormatEntryData&lt;/b&gt; by the integer 2. Windows PowerShell has no built-in definition for this operation, so as a last step, it looks to see whether &lt;b&gt;FormatEntry&lt;/b&gt; defines a method for performing the operation. &lt;/p&gt;
&lt;p&gt;Windows PowerShell looks for the &lt;b&gt;op_&lt;/b&gt;&amp;lt;operation&amp;gt; methods in &lt;b&gt;FormatEntry&lt;/b&gt; if the operation is not one of those that are defined by Windows PowerShell. (For more information, see &lt;i&gt;&lt;a href="http://www.amazon.com/Windows-Powershell-Action-Bruce-Payette/dp/1935182137/ref=sr_1_1?ie=UTF8&amp;amp;qid=1304962495&amp;amp;sr=8-1"&gt;Windows PowerShell in Action&lt;/a&gt;&lt;/i&gt;, 2&lt;sup&gt;nd&lt;/sup&gt; Edition.) &lt;/p&gt;
&lt;h4&gt;One way to &amp;ldquo;fix&amp;rdquo; it&lt;/h4&gt;
&lt;p&gt;I most often want the &amp;ldquo;raw&amp;rdquo; data from my scripts and functions, and sometimes some nicely formatted output when I am debugging. Here is one way I accomplish this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;function Get-Numbers {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;param([Switch]$Format)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;$result = 1..5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if($format) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return $result | Format-Table -AutoSize&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;$result&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I set up &lt;b&gt;$Format&lt;/b&gt; as a switch parameter, which is one that does not require a value and is off by default. I can call this function with the &lt;i&gt;Format &lt;/i&gt;parameter, and my output will be piped to &lt;b&gt;Format-Table&lt;/b&gt;. That means &lt;b&gt;FormatEntryData&lt;/b&gt; objects will be emitted, and I will not be able to operate on the underlying data. &lt;/p&gt;
&lt;p&gt;If I call &lt;b&gt;Get-Numbers&lt;/b&gt; without the parameter (the default), I can work directly on the numbers that are output, by piping it to any other Windows PowerShell cmdlet (or my functions) such as, &lt;b&gt;Where-Object&lt;/b&gt;, &lt;b&gt;ForEach-Object&lt;/b&gt;, or &lt;b&gt;Group-Object&lt;/b&gt;.&lt;/p&gt;
&lt;h4&gt;Solve it another way&lt;/h4&gt;
&lt;p&gt;I find it productive to leverage the modular capabilities in Windows PowerShell. In the following example, I am using a range of numbers; this concept can be applied to any set of objects in Windows PowerShell. I am creating a dynamic module that exists only in memory with &lt;b&gt;New-Module&lt;/b&gt;. This script can be saved as a .psm1 file and stored for later use with the &lt;b&gt;Import-Module&lt;/b&gt; cmdlet.&lt;/p&gt;
&lt;p&gt;Users of this script can now get to any core components of the data, and they get &amp;ldquo;helper&amp;rdquo; functions too. For example, it is simple to get the sum of all odd numbers by using &lt;b&gt;Get-SumOfOdd&lt;/b&gt;. Plus, this approach enables the flexibility to filter the data in other ways, for example, getting only the numbers that are divisible by 5. Users can also reuse my implementation of &lt;b&gt;Sum&lt;/b&gt; as shown here, which in itself could be a custom calculation. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="line-height:normal;list-style-type:disc;mso-fareast-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;mso-ansi-language:en-us;mso-fareast-language:en-us;mso-bidi-language:ar-sa;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-MySum ( Get-Numbers | Where { $_ % 5 -eq 0} )&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Dynamic module with New-Module&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;New-Module -Name TestModule {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function Get-Numbers { 1..10 }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function Get-MySum ($numbers) { $numbers | foreach { $s=0 } { $s+=$_ } { $s } }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function Get-MyEvenNumbers&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{ Get-Numbers | Where { $_ % 2 -eq 0 } }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function Get-MyOddNumbers&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{ Get-Numbers | Where { $_ % 2 -eq 1 } }&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function Get-SumOfEven&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{ Get-MySum (Get-MyEvenNumbers) }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;function Get-SumOfOdd&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{ Get-MySum (Get-MyOddNumbers)&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;} | Import-Module&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Example of usage:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;@&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-Numbers:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;$(Get-Numbers)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-MyEvenNumbers: $(Get-MyEvenNumbers)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-MyOddNumbers: &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;$(Get-MyOddNumbers)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Sum All Numbers:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;$(Get-MySum (Get-Numbers))&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-SumOfEven:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;$(Get-SumOfEven)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-SumOfOdd:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;$(Get-SumOfOdd)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;&amp;quot;@&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Results:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-Numbers:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1 2 3 4 5 6 7 8 9 10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-MyEvenNumbers: 2 4 6 8 10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-MyOddNumbers:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;1 3 5 7 9&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Sum All Numbers:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;55&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-SumOfEven:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;30&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height:13.25pt;list-style-type:disc;margin:0in 0in 0pt;"&gt;&lt;span style="mso-bidi-font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="font-family:Lucida Sans Typewriter;"&gt;&lt;span style="color:#000000;"&gt;Get-SumOfOdd:&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;25&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It is important to keep in mind that the scripts and functions I write can be consumed by others (as well as by me). Letting the underlying objects flow across the pipeline is key to leveraging the Windows PowerShell system. I can always provide a parameter or additional function that handles reporting if my user needs it. This is demonstrated with the &lt;b&gt;New-Module&lt;/b&gt; example.&lt;/p&gt;
&lt;p&gt;A key benefit is that users can always inject a pipeline between the data generation and reporting functions. This allows them to subset the information, say with a &lt;b&gt;Where-Object&lt;/b&gt;, or to perform a calculation and then let it flow to the reporting. This provides maximum flexibility.&lt;/p&gt;
&lt;p&gt;At the end of the day, outputting formatted data will frustrate your efforts because this is the end of the road for the underlying data. It cannot be transformed or operated on anymore. Outputting objects is the cornerstone of being productive in Windows PowerShell.&lt;/p&gt;
&lt;p&gt;Thank you, Doug, for this great blog. &lt;/p&gt;
&lt;p&gt;I invite you to follow me on &lt;a target="_blank" href="http://bit.ly/scriptingguystwitter"&gt;Twitter&lt;/a&gt; and &lt;a target="_blank" href="http://bit.ly/scriptingguysfacebook"&gt;Facebook&lt;/a&gt;. If you have any questions, send email to me at &lt;a href="mailto:scripter@microsoft.com"&gt;scripter@microsoft.com&lt;/a&gt;, or post your questions on the &lt;a target="_blank" href="http://bit.ly/scriptingforum"&gt;Official Scripting Guys Forum&lt;/a&gt;. See you tomorrow. Until then, peace.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ed Wilson, Microsoft Scripting Guy&lt;/b&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3427631" width="1" height="1" alt="" /&gt;</description></item><item><title>Learn How to Load and Use PowerShell Snap-ins</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2010/10/16/learn-how-to-load-and-use-powershell-snap-ins.aspx</link><pubDate>Sat, 16 Oct 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:7887</guid><dc:creator>Anonymous</dc:creator><description>Summary : How do I use snap-ins with the Windows PowerShell 2.0 cmdlet, Add-Module ? What are the benefits of using this method over Add-PSSnapin ? Microsoft Scripting Guy Ed Wilson here. I am on holiday today and am speaking at SQL Saturday #49 today...(&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2010/10/16/learn-how-to-load-and-use-powershell-snap-ins.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3362066" width="1" height="1" alt="" /&gt;</description></item><item><title>Deploy a PowerShell Module with SharePoint Cmdlets</title><link>http://powershell.com/cs/blogs/hey-scriptingguy/archive/2010/09/29/deploy-a-powershell-module-with-sharepoint-cmdlets.aspx</link><pubDate>Wed, 29 Sep 2010 05:00:00 GMT</pubDate><guid isPermaLink="false">f421715f-7aba-45f0-8a8d-44de5318a3a7:7729</guid><dc:creator>Anonymous</dc:creator><description>Summary : In this article, Scripting Guys guest blogger Brian Jackett illustrates how to deploy a Windows PowerShell module with SharePoint cmdlets. Hey, Scripting Guy! I would love to be able to use Windows PowerShell to deploy a module with the SharePoint...(&lt;a href="http://blogs.technet.com/b/heyscriptingguy/archive/2010/09/29/deploy-a-powershell-module-with-sharepoint-cmdlets.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3358603" width="1" height="1" alt="" /&gt;</description></item></channel></rss>