How Can I Configure the Telephony Options for a User?

For the most part, there’s a pretty close tie between the items found in the Lync Server Control Panel and the parameters and property values used in Microsoft Lync Server 2010’s implementation of Windows PowerShell. For example, take a look at the following table, which compares the item labels used in the Edit Meeting Configuration dialog in the Control Panel with their Windows PowerShell equivalents:

Control Panel Labels

Windows PowerShell Properties/Parameters

PSTN callers bypass lobby

PstnCallersBypassLobby

Designate as presenter

DesignateAsPresenter

Assigned conference type by default

AssignedConferenceTypeByDefault

Admit anonymous users by default

AdmitAnonymousUsersByDefault

Can’t get much closer than that, can you?

At any rate, we – what’s that? Well, yes, we did say that for the most part there’s a pretty close tie between the items found in the Lync Server Control Panel and the parameters and property values used in Microsoft Lync Server 2010’s implementation of Windows PowerShell. So does that mean that there are exceptions to that general rule? Well, to be perfectly honest, yes, there are. For the most part, though, those exceptions aren’t worth losing any sleep over.

Right, we did use the phrase “for the most part” again, didn’t we? We should probably stop doing that; it just creates more work on our end.

OK, as it turns out there is at least one important area in which the values shown in the Control Panel and the corresponding PowerShell properties andparameters don’t match up very well: telephony. If you create or modify a user account using the Control Panel you’ll see the following telephony options:

Audio/Video disabled

PC-to-PC only

Enterprise Voice

Remote call control

And if you look at the PowerShell parameters for the Set-CsUser cmdlet you’ll see parameter names like these:

-AudioVideoDisabled

-IPPBXSoftPhoneRoutingEnabled

-RemoteCallControlTelephonyEnabled

-EnterpriseVoiceEnabled

OK, at first glance that doesn’t look too terribly bad, even though Control Panel doesn’t seem to have an option correspondingto –IPPBXSoftPhoneRoutingEnabled. Oh, and PowerShell doesn’t seem to have a parameter that goes along with Control Panel’s PC-to-PC only option. That’s bad. Even badder, however is the fact that you can immediately run into problems if you actually try to use one of these PowerShell parameters to modify the telephony options for a user. For example, suppose Ken Myer has been enabled for Enterprise Voice, and you’d now like to make a change and enable him for Remote Call Control instead. You might think the following command would do the trick:

As it turns out, you can’t enable Ken Myer for Remote Call Control if he’s currently enabled for Enterprise Voice (or vice-versa). In fact, there’s a fairly complex little matrix of parameters and parameter values that must be used in order to configure the telephony options for a user.

Good point: if only someone could show us those parameters and parameter values, and then show how those things relate to the telephony options found in the Control Panel. You know, if only someone could put together a table like this one:

Control Panel option

IPPBXSoftPhoneRoutingEnabled

AudioVideoDisabled

RemoteCallControlTelephonyEnabled

EnterpriseVoiceEnabled

Audio/video disabled

$False

$True

$False

$False

PC-to-PC only

$False

$False

$False

$False

Enterprise Voice

$False or $True

$False

$False

$True

Remote call control

$False

$False

$True

$False

Hey, we told you it was a little complicated, didn’t we? But here’s the deal: if you want to set Ken Myer’s telephony option to Audio/video disabled you need to use the preceding table to construct a command like this one:

Note. OK, depending on how Ken’s account is currently configured you might not need to use all those parameters. But the above command will always set Ken’s telephony option to Audio/video disabled, regardless of how his account is currently set up.

The trick here? Set the –AudioVideoDisabled parameter to $True and everything else to $False.