Invoke-SEFAUtil – a PowerShell wrapper function

updated #en, #lync, #powershell, #skype4b edit this page

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 

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 -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 -AddTeamMember

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 -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 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

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

so long,