Haiku #150
Happy birthday! We
Hope you will enjoy these cool
Network cmdlets.
We'd like to start off today's haiku by wishing our fellow Lync Server PowerShell blog writer a happy birthday. Like we said, we'd like to start of today's haiku that way. However, the blog writer in question specifically told us "Whatever you write about in the next haiku, don't tell anyone that it's my birthday." Fair enough. Because of that, we'd like to start off today's haiku by wishing the following people (none of whom write for the Lync Server PowerShell blog) a happy birthday:
· Henry David Thoreau
· George Washington Carver
· Buckminster Fuller
· Bill Cosby
· Richard Simmons
Happy birthday everyone!
We can see you have a question: you're wondering, if it was her birthday (which it isn’t), how old would our fellow Lync Server PowerShell blog writer be? Well, as it turns out, she's fort … unately … still unbelievably young and vibrant. How young is she? So young that she still has to take a nap every afternoon in order to get through the day and to avoid becoming unbearably cranky.
Oh, wait: that's the author of today's haiku who still has to take a nap every afternoon in order to get through the day and to avoid becoming unbearably cranky. But that's definitely not because he's unbelievably young and vibrant.
Speaking of birthdays, earlier this week we asked our fellow Lync Server PowerShell blog writer what she would like for her birthday, if, she was actually having a birthday which, as we have tried to make perfectly clear, she is not. She told us, "You know, all my life there's only one thing I've ever wanted, and one thing which I've never gotten: I would like someone to write me a haiku about the New-CsIssuedCertId cmdlet."
"So you want a haiku about the New-CsIssuedCertId cmdlet, do you?" we replied. "Well, that's too bad, because we already decided to write about the CsNetworkSite cmdlets instead. But maybe we'll get to that IssuedCert thing for your next birthday."
Note. Not that she ever has any birthdays, mind you. But if she ever does have a next birthday, we'll try to do a haiku about the New-CsIssuedCertId cmdlet.
Besides, the CsNetworkSite cmdlets (Get-CsNetworkSite, New-CsNetworkSite, Remove-CsNetworkSite, and Set-CsNetworkSite) make for a far better, and far more festive, birthday present than almost any of the Lync Server PowerShell cmdlets do. Granted, for sheer fun and frivolity it's hard to top the CsHostedVoicemailPolicy cmdlets. But the CsNetworkSite cmdlets come close.
So what's so great about the CsNetworkSite cmdlets? That's an easy one: the CsNetworkSite cmdlets play a key role in setting up your Call Admission Control infrastructure. As we've noted before, Call Admission Control provides a way for you to limit the bandwidth allocated for audio and video calls. One way to do that is to create bandwidth policy profiles, profiles that can do two things: 1) limit the amount of bandwidth available per audio and/or video session; and, 2) limit the total amount of bandwidth available for all audio and/or video sessions. So how do you actually implement these bandwidth policy profiles after they've been created? That's another easy one: you assign them to network sites, geographic locations located within a network region. And how do you create and manage these network sites? Beats the heck out of us.
Oh, wait, we know how: you use the CsNetworkSite cmdlets. For example, suppose you'd like to place some bandwidth limits on the audio/video traffic traveling to and from your Paris location. The best way to do that is to create a site for the Paris location, and assign the new site the appropriate bandwidth policy profile:
New-CsNetworkSite -Identity Paris -NetworkRegionID EMEA -BWPolicyProfileID LowBWLimits
That's really all there is to it. We use the New-CsNetworkSite cmdlet to create a site for the Paris location, we associate that site with the EMEA region (all sites have to be associated with an existing region), and we assign the bandwidth policy profile LowBWLimits. Happy birthday indeed!
Note. You say you don't know which network regions you even have in your organization? That's OK: we have no idea which network regions you have in your organization, either. Fortunately, though, there's an easy way to get that information:
Get-CsNetworkRegion
And there's an equally easy way to find out which bandwidth policy profiles you have available to you:
Get-CsNetworkBandwidthPolicyProfile
One quick clarification before we go on. Keep in mind that these are network sites used with Call Admission Control; they have nothing to do with plain old Lync Server sites (the ones you can retrieve using the Get-CsSite cmdlet). Those plain old Lync Server sites represent collections of Lync Server pools; network sites don't represent collections of Lync Server pools. And, of course, network sites have nothing to do with Active Directory or sites or with Microsoft Exchange sites. Network sites are their own, unique little entity.
Note. So if that's the case, shouldn't we have used a term other than site to refer to these entities? Nah. That would take all the fun out of system administration, wouldn't it?
As you might expect, the Set-CsNetworkSite cmdlet provides a way for you to modify the properties of one of your network sites. For example, maybe you've made some network upgrades to the Paris location and, as a result, you feel you can now allot slightly more bandwidth to audio/video transmissions to and from that site. That's fine; just use Set-CsNetworkSite to assign a different bandwidth policy profile:
Set-CsNetworkSite -Identity Paris - BWPolicyProfileID MediumBWLimits
Let's what's next … oh, there's this one: what's Get-CsNetwork site for? Well, that provides a way for you to retrieve information about your existing network sites. For example, this command returns information about all your network sites:
Get-CsNetworkSite
This command returns information about all the sites associated with the EMEA region:
Get-CsNetworkSite | Where-Object {$_.NetworkRegionID -eq "EMEA"}
And this command (our personal favorite), lets you know if you have any network sites that have not been assigned a bandwidth policy profile:
Get-CsNetworkSite | Where-Object {$_.BWPolicyProfileID -eq $Null}
Good question: don't all network sites have to have a bandwidth policy profile? Nope. If you don't assign a bandwidth policy profile to a site that simply means that there won't be any bandwidth limitations placed on the site. In fact, if you ever want to remove a bandwidth policy profile from a site (and thus remove all the bandwidth limitations applied to that site) just use a command like this one, which sets the BWPolicyProfileID property to a null value:
Set-CsNetworkSite -Identity Paris - BWPolicyProfileID $Null
And no, we haven't forgotten good old Remove-CsNetworkSite. This might come as a bit of a surprise to you (or maybe not), but Remove-CsNetworkSite is used to remove network sites. You say you're moving your French offices and thus need to get rid of the Paris site? No problem:
Remove-CsNetworkSite -Identity Paris
That should do it for today. Incidentally, if you know any females who are having a birthday any time soon (not that we know of any, mind you), well, here's a list of the gifts that women ask for more than any other:
· Perfumes and cologne
· Jewelry
· Clothing
· Handbags
· Get away vacations
· Cellphones
· Cellphone accessories
· Shoes
· Spa treatments
· Gift cards
As you can see, the CsNetworkSite cmdlets just missed making the top 10. Maybe next year, huh? See you tomorrow.