FizzBuzz: A PowerShell Story
Your code looks good to me. I like how it takes pipelined input. That is pretty elegant.



You don't need the Position=0 here:

[Parameter(Position=0,ValueFromPipeline=$true)]


This is what the help says about that:


  By default, all function parameters are positional. Windows PowerShell        assigns position numbers to parameters in the order in which the        parameters are declared in the function.




The following comments are just my personal preferences. If this were a real code review for production code, I wouldn't insist on any of it. Feel free to ignore!



I think the switch statement there is elegant but a little confusing. In most languages, switch will only ever select a single branch. When I see "switch", I expect it to select one branch only. That's just a habit of thought. Your code took me by surprise. I had to stop and think about how it managed to get both "Fizz" and "Buzz" for the number 15.

I'm almost tempted to say that multiple selection in switch statements is a misfeature of PowerShell because it violates the principle of least surprise. I'm torn on that question however because it is a cool feature.

Personally I would have used two if statements. Even though that would have been clunklier, it would have been clearer and more explicit in my opinion, and therefore better.



Regarding this line:

-join $result


That is correct according to the help. -join can indeed be a unary operator. It looks weird though. I'd never seen it like that before, and it took me by surprise. Personally I would have used it as a binary operator in the usual fashion:

$result -join ""