I had to use SEFAUtil to get some tasks done the other day. As I prefer using PowerShell over just another command line tool, I decided to come up with a quick wrapper function that is intended to make my life a little easier.
If you don’t know what SEFAUtil is and how to configure it, check out this great post or this one if you prefer German ;) In a nutshell, it’s a command line tool to configure Skype for Business (Lync) Voice Features (like call forwarding, team call) on behalf of end-users.
Warning: I do not recommend using this in production without understanding what it does, although I did test it in my lab, it may break something!
Ok, having that said, how do I use thins thing? First of all you will need a copy of this script on the computer where you have been running SEFAUtil until now. As the computer is authenticated using a certificate (it must be configured as a trusted application), you will not be able to run this from anywhere. Once you’ve downloaded the script, start a Skype for Business Management Shell and use like in the following examples:
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username email@example.com
This example invokes SEFAUtil without additional parameters, call forwarding settings for the user [email protected] are shown.
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username firstname.lastname@example.org -EnableSimulRing +391231234567
This example enables Simul Ring for the user [email protected]. The destination number for Simul Ring is +391231234567.
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username email@example.com -AddTeamMember firstname.lastname@example.org
This example adds [email protected] to [email protected]. This will also enable Simul Ring for the user.
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username email@example.com -DelayRingTeam 10
This example set’s the delay for Team Calls to 10 seconds for the user [email protected]
.\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Username firstname.lastname@example.org –DisableTeamCall
This example disables Team Call for [email protected]
Get-CsUser -OU "OU=users,OU=tomt,DC=tomt,DC=local" | .\Invoke-SEFAUtil.ps1 -Server ly15.tomt.local -Verbose -AddDelegate email@example.com
The complete online help can be found here
What I did in this script, is basically wrap PowerShell around SEFAUtil.exe, I did add some parameter validation, it can only run against Lync users for example. It does write a logfile to the $temp directory and supports PowerShells common parameters like Verbose and WhatIf.
Download & Source for Invoke-SEFAUtil – a PowerShell wrapper function
The is available on the PowerShell Gallery, you can install or download it using the following commands:
Install-Script -Name Invoke-SEFAUtil – a PowerShell wrapper function -Scope CurrentUser
Save-Script -Name Invoke-SEFAUtil – a PowerShell wrapper function -Path <Path>
And you can find the source on GitHub: tomtorggler/PowerShell
Note: The script requires the Lync Module to be available on the Computer where it will be run, it does also require PowerShell version 3.
Note: Changing the CallAnswerTime only does not work, a limitation of the SEFAUtil.exe does not allow this setting to be changed without also configuring CallForwarding