Haiku #152

No need to lose your

Head. Instead, test your CS

Address book service.


Hey, everyone. It's July 14th, and we'd like to be the first to wish everyone out there a happy Bastille Day. For those of you who aren't up on your French history, Bastille Day commemorates the storming of the Bastille fortress/prison in Paris way back in July of 1789. "Intoxicated with liberty and enthusiasm" an angry crowd of Parisians gathered at the Bastille and demanded that the gates be opened and the prisoners set free. After a series of negotiations the Bastille's commandant gave in, opened the gates, and set the prisoners free. As a token of their appreciation, the Parisians rioted anyway, 98 people were killed, and the Bastille commandant and several of his men were paraded through the streets of town and then brutally beaten, lynched, stabbed, and shot.


And then, just to be on the safe side, they chopped off his head as well. Hey, you can't be too careful, you know?


That was day 1 of the French Revolution, a day that pretty much set the tone for the ensuing festivities. In a nutshell, the French Revolution worked like this: someone would seize power and then, in the spirit of liberty, fraternity, and equality, immediately chop off the head of anyone who might disagree with them in the slightest way. A few weeks later, someone else would seize power, and immediately chop off the head of anyone who might disagree with them in the slightest way. This went on for a good 10 years, until Napoleon Bonaparte swooped in and seized power for himself.


In other words, the final score for the French Revolution was this: tens of thousands of people with their heads chopped off, and a dictatorship imposed by Napoleon Bonaparte. Hey, why wouldn't you have a holiday to celebrate something like that?


Note. OK, we're being a little facetious here. Besides, it's not like the French Revolution doesn’t have its fans. For example, here's what Lenin had to say about the French Revolution: "We need the real, nation-wide terror which reinvigorates the country and through which the Great French Revolution achieved glory."


See? You just have to learn to take the bad along with the good.


At any rate, and courtesy of the Internet, here are some suggested Bastille Day activities for those of you interested in celebrating today's holiday:


· Offer up a few of your favorite Francophone words of wisdom for discussion. If anyone disagrees with you, chop off their head.

Note for the lawyers. Remember, this is from the Internet; we personally don’t recommend you chop off anyone’s head.

· Talk about famous French people who share each guest's birthday. For example, here are some famous French people who share a birthday (December 18th) with the author of today's haiku: Alexandre Chatrian, André S. Labarthe, Bettina Rheims, Germaine Aussey, and Noël Roquevert. Who wouldn't have a great time sitting around talking about André S. Labarthe?

Note. And if there is someone who wouldn't have a great time sitting around talking about André S. Labarthe, chop off their head.

Note for the lawyers. Yeah, same thing here.

· Anyone who has been to France will be eager to talk about it. Set up a projector to swap stories and photos. For example, the author of today's haiku has been to Paris, and has seen the prison cell where Marie Antoinette was held before they chopped off her head.

Such fun!


Of course, here in America we have our own way of celebrating Bastille Day: we like to spend the day running the Test-CsAddressBookService cmdlet. Why? Well, a better question would be: why not? After all, the Test-CsAddressBookService provides a quick and easy way to verify that your Address Book servers are all up and running. When you call Test-CsAddressBookService, the cmdlets starts off by connecting to the Address Book Download Web service on the specified pool; if it makes the connection, the cmdlet then requests the location of the Address Book files. If that request is filled, then the test is considered a success, and you'll see output similar to this:


TargetUri : https://atl-cs-001.litwareinc.com/abs/handler

TargetFqdn : atl-cs-001.litwareinc.com

Result : Success

Latency : 00:00:00

Error :

Diagnosis :


We should also point out that you'll see a whole bunch of XML data displayed on screen before you actually get the results of the test. To the best of our knowledge, there's not a whole heck of a lot you can do about that. We've tried several different ways to suppress that XML output, but we couldn't do it; the feature team that produced the cmdlet couldn't come up with any suggestions either. That's something you'll just have to accept.


Note. And what happens if you can't accept it; will we chop off you head or something? Um, hang on a second … OK, no, we won't.


So how do you actually run the Test-CsAddressBookService cmdlet? Well, if you have set up health monitoring test accounts for a pool, you can run it using a command as simple as this:


Test-CsAddressBookService -TargetFqdn atl-cs-001.litwareinc.com


And what if you haven't set up these test accounts, or what if you'd like to see if a specific user is able to connect to the Address Book service? That's fine; in that case, you can use a couple commands like these:


$cred1 = Get-Credential "litwareinc\kenmyer"


Test-CsAddressBookService -TargetFqdn atl-cs-001.litwareinc.com -UserCredential $cred1 -UserSipAddress "sip:kenmyer@litwareinc.com"


The one catch here? We're running this command under Ken Myer's user account, which means we need to know both Ken Myer's user name (litwareinc\kenmyer) and his password. (Oh: and his SIP address as well.) Get any of those things wrong and the test will fail:


TargetUri :

TargetFqdn : atl-cs-001.litwareinc.com

Result : Failure

Latency : 00:00:00

Error : The log on was denied. Check that the proper credentials are

             Being used and the account is active.

             Inner Exception:NegotiateSecurityAssociation failed, error:

Diagnosis :


Not a pretty sight, by any means.


And what if you have multiple Address Book servers, and you'd like to test all of them with a single command? Well, one way to do that is to pipe the Address Book FQDNs to the ForEach-Object cmdlet, like so:


"atl-cs-001.litwareinc.com", "Dublin-cs-001.litwareinc.com" | ForEach-Object {Test-CsAddressBookService -TargetFqdn $_}


And while we aren't exactly experts on the Address Book service, this command might be useful as well: it picks out each of your Lync Server pools that happens to be running the Web service, then tests the Address Book service on each of those pools:


Get-CsPool | Where-Object {$_.Services –match "WebServer"} | ForEach-Object {Test-CsAddressBookService -TargetFqdn $_.Identity}


To be honest, we aren't sure how useful that particular command is, but it gives you a template to work with: all you have to do is figure out the best way to retrieve your Address Book server FQDNs and then pipe those babies to the ForEach-Object cmdlet.


That should do it for now. Enjoy the rest of your Bastille Day: don't drink too much, don't party too hard, and, whatever you do, don't lose your head.


See you tomorrow.