Haiku #143

Smile! After all, you

(And Hugh) can run the User

Server cmdlets.

 

So it turns out that there was a monastery in this one town where something weird happened and the monks all went crazy; as a result, they started growing these man-eating flowers that began terrorizing the town. The townspeople tried everything they could to stop these ferocious flowers, but nothing they tried worked: the flowers just kept eating all the town folk, one-by-one. Just when things looked hopeless, however, a man named Hugh approached the monks. "Leave our little village right now," he commanded, and the monks immediately grabbed all their man-eating flowers and took off for parts unknown, never to be heard from again.

 

The moral of the story? Only Hugh can prevent florist friars.

 

Ha! Get it? You know, because Smokey the Bear always says that only you can prevent forest fires, except that in this case we're saying that only Hugh can prevent – well, never mind. We apologize, but, sadly, that's pretty much the only joke that the author of today's haiku knows.

 

Note. What's that? You say that everyone who knows the author of today's haiku knows at least one joke themselves? Ha! Good one!

 

Hey, wait a minute: what's that supposed to mean?

 

As you might have guessed it's already been one of those days: despite having been to work for over two hours now, the author of today's haiku hasn't managed to get any work done whatsoever.

 

Note. Yes, most of his colleagues would argue that, despite having been to work for nearly 11 years now, the author of today's haiku hasn't managed to get any work done whatsoever. But that's another story.

 

Instead of working, the author of today's haiku has spent his morning trying to help people who are experiencing issues with, or have questions about, Lync Server. Not necessarily Lync Server PowerShell, mind you, but Lync Server in general. Apparently anyone who runs into a problem with Lync Server thinks, "Who would be the best possible person to try and answer this question for me? Oh, I know: what about that guy who writes haikus?"

 

When in doubt, go with the obvious choice, right?

 

At any rate, the author of today's haiku actually enjoys trying to help people; he's just not always very good at helping people. If someone has a question about Lync Server PowerShell he can usually help them. However, sometimes people have questions like this:

 

"I'm trying to configure a 9 double camulator load balancer to talk to a 64-bit hotzenjammer in server emulation mode, but I don't want to enable ABC-QDR 5 unless I absolutely have to. (Our company policy is to only use thread-nine compliant protocols.) Am I going to have a problem if I allow RDPPP traffic throw my half-duplexing firewall?"

 

If he was a betting man, the author of today's haiku would be willing to bet that yes, you definitely are going to have a problem in that situation. But because he isn't a betting man, and has no idea what that question even means, he ends up trying to track down someone on the product team who can help, and then serves as a go-between between the person who asked the question and that someone on the product team who can answer the question.

 

And that's pretty much how the author of today's haiku has spent his entire morning, which explains why he thought it would be a good idea to lighten things up by telling a funny joke.

 

And yes, as soon as actually learns a funny joke, he'll do just that.

 

In the meantime, another good way to lighten the mood is to talk about the Set-CsUserServer cmdlet. The Set-CsUserServer cmdlet is used to – oh, you guessed it, didn't you? Well, you're right: the Set-UserServer cmdlet is used to manage the User Servers employed by Microsoft Lync Server 2010. If you aren't familiar with User Servers, this server role is a sort of catch-all component that performs a number of useful management tasks. For example, User Servers provide presence information; they help manage conferences (through the Focus and Focus Factory); they assist with user authorization and user-level routing; and they serve as the primary interface to the back-end database.

 

You say that's not enough? OK; User Servers also assist with provisioning user accounts.

 

We thought you'd be impressed by that.

 

At any rate, the Set-CsUserServer cmdlet lets you manage three key properties of your User Servers:

 

· ConferenceServer – Obviously this is the Conferencing server associated with the User Services pool. To set this, just specify the service Identity of the Conferencing server; for example:

-ConferenceServer "ConferenceServer:atl-cs-001.litwareinc.com"

· McuFactorySipPort – The port used for connecting to the Focus Factory (McuFactory). The Focus Factory allocates media control units (MCUs) in order to add specific media types such as audio to conferences.

· UserDatabase – Another obvious one: the user database associated with the User Services pool. Again, just specify the service Identity of the database; for example:

-UserDatabase "UserDatabase:atl-cs-001.litwareinc.com"

 

And that's really it. How do you actually use the Set-CsUserServer cmdlet to change one of these property values? Well, here's one example:

 

Set-CsUserServer -Identity "UserServer:atl-cs-001.litwareinc.com" -McuFactorySipPort 445

 

And here's another:

 

Set-CsUserServer -Identity "UserServer:atl-cs-001.litwareinc.com" –ConferenceServer "ConferenceServer:atl-cs-001.litwareinc.com"

 

That's pretty much all you have to do. And, for that matter, pretty much all that you can do.

 

Just a couple quick notes about the Set-CsUserServer cmdlet before we call it a day. First, you might have noticed that this is the only cmdlet in the CsUserServer family: there is no Get-CsUserServer cmdlet. So how do you get information about your User Servers? Well, like many of the service/server roles in Lync Server, you need to use the Get-CsService cmdlet to retrieve information. For example, this command returns information about all your User Servers:

 

Get-CsService –UserServer

 

To get back information for a specific server, use a command like this one, which specifies the server Identity:

 

Get-CsService –Identity "UserServer:atl-cs-001.litwareinc.com"

 

And, in keeping with our light-hearted and carefree mood, here's a command that finds all the User Servers that have their MCU Focus Factory SIP port set to something other than the default port 444:

 

Get-CsService –UserServer | Where-Object {$_.McuFactorySipPort –ne 444}

 

Here's another thing to keep in mind: you can't pipe information directly to the Set-CsUserServer cmdlet. For example, suppose you want to set all your Focus Factory SIP ports to 445; with that in mind, you try running this command:

 

Get-CsService –UserServer | Set-CsUserServer -McuFactorySipPort 445

 

Is that going to work? Well, not exactly:

 

Set-CsUserServer : 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.

 

So what does that mean? That means that you need to use a command like this one, which pipes the data to the ForEach-Object cmdlet instead of the Set-CsUserServer cmdlet:

 

Get-CsService -UserServer | ForEach-Object {Set-CsUserServer -Identity $_.Identity -McuFactorySipPort 445}

 

As you can see, that's no big deal. It's just something you need to be aware of.

 

Is there anything else you need to be aware of? Just this: a group of chess players were standing in the lobby of a hotel, bragging about all their recent victories and accomplishments. After a few minutes the hotel manager came out and told them they'd have to leave. "But why?" asked one of the chess enthusiasts. "I'll tell you why," said the hotel manager. "Because I don't like chess nuts boasting in an open foyer."

 

You see, because of the Christmas song, the one about chestnuts roasting on an– well, never mind. Here's something that is guaranteed to lighten your mood and bring a smile to your face: that's all we have for today. See you tomorrow.