The bare essentials:

Food, water, clothing, and the

LisPort cmdlets.

 

Recently, the author of today's haiku has been reading the book Collapse by Jared Diamond, a book that tries to explain why civilizations that were once vibrant and thriving – like the Anasazi Indians in the American southwest, or the Mayan culture in Mexico and Central American – ended up failing. As you might expect, there are typically a number of factors that end up causing a society to fail; for example, on Easter Island the inhabitants ended up cutting down every last tree on the island (not good when you rely on wood for heating and cooking); eroded all their topsoil and farmland (in part because they cut down every last tree on the island); and devoted more of their time and resources to erecting those famous statues than they did trying to stay alive. We admit that, considering the state of the modern world, we probably shouldn't be the ones to point fingers. Nevertheless, come on, guys: giant statues instead of food? Really?

 

Note. Does that mean that the authors of the Lync Server PowerShell blog are re-thinking their plans to erect a number of huge statues of PowerShell writer Jean Ross? Well, no, not yet. But it has given us food for thought.

 

One factor that Diamond does not cite, however, is this: despite all the research and all the study, archeologists have yet to find evidence that indicates that any of these failed civilizations used the CsLisPort cmdlets (Get-CsLisPort, Remove-CsListPort, and Set-CsLisPort). In fact, as near as we can tell, all the civilizations in the world that have ever failed had one thing in common: none of them used the CsLisPort cmdlets.

 

And yes, that includes the Norse explorers who tried to settle in Newfoundland, but then were forced to return to Greenland.

 

Note. The fact that they decided to go back to Greenland, where mid-summer temperatures barely manage to stay above freezing, should give you some hint as to how badly things went in Newfoundland.

 

That's the bad news, particularly if you’re an ex-Viking or former ruler of Easter Island. The good news, however, is that modern-day civilization is in absolutely no danger of ever collapsing. Why not? Because we do have access to the CsLisPort cmdlets.

 

So what exactly are the CsLisPort cmdlets, and why are they so useful? Well, the CsLisPort cmdlets are used as part of the Enhanced 9-1-1 (E9-1-1) location service; E9-1-1 provides a way for users to make an emergency call using a Lync Server Phone Edition phone and, more importantly, for emergency responders to be able to pinpoint the physical location from which that phone call came. (That's important, because Phone Edition phones aren't necessarily tied to a specific location, like a good old-fashioned landline is.)

 

In order for the E9-1-1 system to work, administrators need to configure a location map (called a wiremap) that determines a caller’s physical location. The CsLisPort cmdlets allow these administrators to map the physical location of the port that the client is connected to. In turn, and in conjunction with the rest of the wiremap, that helps identify where the emergency call is coming from.

 

The CsListPort cmdlets are pretty easy to use, although there is one important thing to note right away: like most of the E9-1-1 cmdlets, there is no New-CsListPort cmdlet. Instead, you use Get-CsLisPort to retrieve information about ports configured for the E9-1-1 service; you use the Remove-CsListPort cmdlet to remove ports from your E9-1-1 wiremap; and you use the Set-CsLisPort cmdlet both to create new ports and to modify existing ports.

 

Oh, and there's another important thing to note, too: port locations have a more complicated identity than most Lync Server components. For one thing, port locations don't even have an Identity property; there's no single name or label that can be used to uniquely identify a port. Instead, ports are identified by a unique combination of the following fields:

 

·         ChassisID. This is typically the MAC address of the port switch, although the ChassisID can also be the IP address of the switch.

·         PortID. A string value that specifies the port ID.

·         PortSubTypeID. An integer value that specifies how the PortID was derived. By default, the PortSubTypeID is set to 7, which means "locally assigned;" in turn, that means that an algorithm was used to generate the PortID for the port. Alternatively, the PortSubTypeID might be set to 1 (InterfaceAlias), which indicates that the port ID value is a network alias. (A network alias is used to allow multiple IP addresses to point to a single port.) Or, the PortSubTypeID can be set to 5 (InterfaceName), which indicates that the PortId represents the name of the port.

 

Note. Before you ask any questions, sorry, but that is the extent of our knowledge about port IDs and port ID subtypes. If you have a question about this feel free to ask; just keep in mind that we probably won’t know the answer and that we'll need some time to track down someone who does know the answer.

 

As we noted, the combination of those three properties determines the Identity of a port. If you want to create a new port, just be sure that the combination of those three properties is unique. For example, this command creates a new port with the ChassisID of 99-99-99-99-99-99, a PortId of 4200, and a PortIdSubType of 1:

 

Set-CsLisPort -ChassisID 99-99-99-99-99-99 -PortID 4200 -PortIdSubType 1 -Location "30/1000" -HouseNumber 1234 -PreDirectional NE -StreetName First -StreetSuffix Avenue -City Redmond -State WA -Country US -PostalCode 99999

 

Note. As you can see, the command also specifies the physical location of that port.

 

If Lync Server can't find a port with that unique combination of ChassisID, PortID, and PortIdSubType then it will create a brand-new port. And what if it does find a port with that identity? In that case, it will modify the existing properties of that port. For example, maybe the port used to be located at 6789 NE First Avenue in Redmond, WA. Based on the preceding command, that location will now be changed to 1234 NE First Avenue in Redmond, WA.

 

And yes, it can be a little overwhelming, at least at first. But you'll catch on in no time.

 

Note. And if you don't catch on? Well, we don't want to alarm you, but remember what happened to the folks on Easter Island.

 

Another thing you might want to keep in mind here is that the Get-CsLisPort cmdlet has no parameters at all. (None.) So then how do you retrieve information about a specific port? That's actually easy; you just need to retrieve information about all the ports and then pipe that information to the Where-Object cmdlet. For example, here's a command that retrieves one (and only one) port:

 

Get-CsLisPort | Where-Object {$_.ChassisID -eq "99-99-99-99-99-99" –and $_.PortId –eq "4200" –and $_.PortIdSubType –eq 1}

 

And here's a command that returns any port that has a ChassisID equal to 99-99-99-99-99-99 (and yes, most of the time you'll only have one port with that ChassisId):

 

Get-CsLisPort |Where-Object {$_.ChassisID -eq "99-99-99-99-99-99"}

 

And there you have it: the CsLisPort cmdlets. We're not saying that you have to use the CsLisPort cmdlets; that's up to you. All we are saying is this: if you don't use the CsLisPort cmdlets your E9-1-1 system isn't going to work as well as it could. Is that why civilization on Easter Island collapsed, because the Easter Islanders tried to make emergency calls for help only to discover that their port locations had never been configured and thus the emergency responders had no idea where the 9-1-1 calls were coming from? As far as we know, no researcher has ever stated that this wasn't why the civilization on Easter Island collapsed.

 

Something to think about.