Haiku #151

West Side Story? Bah!

We've got a much better show:

Set Conference Server.


Last night the author of today's haiku had a chance to see one of the first-run showings of the new musical Aladdin, based on the Disney movie of the same name.


Note. Overall verdict: not bad, although not as good as the movie. But, then again, how many things are as good as the movie?


At any rate, Aladdin got the author of today's haiku to thinking.


Note. And yes, something that is eerily reminiscent of a song from another Disney movie, Beauty and the Beast:


"LeFou, I'm afraid I've been thinking"


"A dangerous pastime."


"I know."


So what was the author of today's haiku thinking? You got it: he was thinking that the time is ripe for a musical based on Lync Server PowerShell.


Picture this. The curtain rises, and we see a bunch of Lync Server PowerShell cmdlets scurrying about. The Set-CsUser cmdlet is busy assigning line URIs to users; the Test-CsIm cmdlet is busy ensuring that the instant messaging service is up and running; the New-CsClientPolicy cmdlet is creating new client policies to help manage Microsoft Lync. Amidst all the hustle and bustle, we catch a glimpse of the Set-CsConferenceServer cmdlet standing off to the side, wanting desperately to help but having nothing to do. Eventually all the other cmdlets – who barely even acknowledge the existence of poor Set-CsConferenceServer – hurry off to attend to their important duties. Set-CsConferenceServer stands alone, and begins to sing a sad and solitary song. Set-CsConferenceServer knows what he can do, he knows he can help manage Lync Server. But no one believes in him, and no one will give him a chance.


Note. Too sad? Too much chance that the audience will burst into tears and lose their focus? That's a chance we're going to have to take. Listen, we know how to write a musical about Lync Server PowerShell. It's just that no one believes in us, and no one will give us a chance.


Well, OK, sure, probably for good reason. But that's beside the point!


From there some hilarious hijinks occur. (We haven’t actually figured out what those are yet, but how hard could it be to come up with some hilarious hijinks involving Lync Server PowerShell cmdlets?) And then, suddenly, and without warning, there's a problem with a Conferencing Server. Set-CsUser can't help; what does Set-CsUser know about Conferencing Servers? Test-CsIm can't help; Test-CsIm doesn't know how to configure a Conferencing Server. New-CsClientPolicy? You're kidding right?


No, at this point in time there's only one cmdlet that can save Lync Server: Set-CsConferenceServer. And you know what happens? That's right: Set-CsConferenceServer can't do anything either, because no one has ever even heard of the Set-CsConferenceServer cmdlet, and no one knows what the cmdlet can do or how to use it. At the end of the show, Set-CsConferenceServer is once more left alone on stage, sobbing his eyes out and wondering why, why didn't anyone ever write a haiku that explained what the cmdlet could do and how to use it.


Why indeed. Fade out ….


Thank you. Obviously all we have at the moment is a rough draft,  but even at that we think it's way better than The Fields of Ambrosia, which the London Daily Mail described as " … the biggest turkey, the floppiest flopperoo, the greatest slice of ham to hit the West End stage in years."


Note. Yes, the author of today's haiku does find it a bit irritating that little tidbits of his yearly performance reviews keep being plagiarized by art critics. Come on, people: show some originality, huh?


Well that's a good question: if someone had written a haiku that explained what Set-CsConferenceServer could do and how to use the cmdlet, what would that haiku actually say? Well, that obviously depends on who actually would write a haiku about the Set-CsConferenceServer cmdlet. However, we'd guess that they would probably say that the Set-CsConferenceServer cmdlet is used to help manage Lync Server's A/V Conferencing Servers, those nifty little devices that allow you to add audio and video capabilities to your online conferences. We'd also expect that the article would mention the fact that managing a Lync Server Conferencing Server primarily involves configuring the ports used for the different types of network traffic that flows through the server. For example, suppose you needed to change the port used by the Persistent Shared Object Model (PSOM) protocol. Most likely the article would tell you that you can do that using a command similar to this one:


Set-CsConferenceServer -Identity "ConferencingServer:atl-cs-001.litwareinc.com" -DataPsomPort 8057


And if it was a really good article, it would also point out that some of these network traffic types can use multiple ports, which means you have to specify two things: the first port in the range of ports allocated for that type of traffic, and the total number of ports allocated for that type of traffic. For example, suppose you want to use the ports 1 through 10 for video. (OK, you probably wouldn't use ports 1 through 10 for video, but this would make it easy for the author of the article to illustrate how the cmdlet works.) In that case you would need to do two things: 1) set the starting video port to port 1; and, 2) set the total number of ports allocated for video to 10. In other words:


Set-CsConferenceServer -Identity "ConferencingServer:atl-cs-001.litwareinc.com" –VideoPortStart 1 –VideoPortCount 10


See how that works? We start at port 1 and have a total of 10 ports allocated for video traffic. That means that ports 1 through 10 can be used for – that's right – video traffic.


And if the author wanted to show a slightly more realistic example of setting video ports, he or she could show you a command similar to this one:


Set-CsConferenceServer -Identity "ConferencingServer:atl-cs-001.litwareinc.com" –VideoPortStart 57501 –VideoPortCount 8034


Most authors would probably be content to just leave things at that. A truly exceptional author, however, would make sure to mention that Set-CsConferenceServer doesn't accept pipelined input. Why would the author mention that? Well, suppose you want to configure all your Conferencing Servers to use port 5075 for instant messaging traffic. If so, you'd probably assume that a command like this one would take care of things for you:


Get-CsService -ConferenceServer | Set-CsConferenceServer -ImSipPort 5075


However, that won't take care of things for you. Instead, you'll get an error message similar to this one:


Set-CsConferenceServer : The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of the parameters that take pipeline input.


Note. You know, now that you mention it, that would make a good song for the second act, wouldn't it? Thanks for the suggestion!


Instead, the only way to configure multiple Conference Servers in a single command is to retrieve all the Conference Servers and then pipe the information to the ForEach-Object cmdlet, like so:


Get-CsService -ConferenceServer | ForEach-Object {Set-CsConferenceServer -Identity $_.Identity -ImSipPort 5075}


That command will work. Trust us.


What's that? Why did the preceding command use the Get-CsService cmdlet to return information about the Conference Servers? Why didn't the command use the Get-CsConferenceServer cmdlet instead?


Well, to be honest, the author of the article should have mentioned that there's no such thing as the Get-CsConferenceServer cmdlet. If you want to get back information about your existing Conferencing Servers, and how they're configured, you need to use the Get-CsService cmdlet and the ConferenceServer parameter:


Get-CsService -ConferenceServer


That's just how the world – or at least the Lync Server part of the world – happens to work.


At any rate, that's what we assume an article about the Set-CsConferenceServer cmdlet would talk about; like we said, it's hard to know for sure. In the meantime, our number one priority is to find a hilarious sidekick to accompany Set-CsConferenceServer and provide witty (yet surprisingly wise) commentary as well as a little comic relief. At first we were thinking about the New-CsOutboundTranslationRule cmdlet, but then we got concerned that maybe using that cmdlet was a little too obvious. Needless to say, we are open to suggestions.





Skip to main content