Hello Readers, I hope you’re well.

This is the 3rd part of a series on the New Auto Attendants and Call Queues.  Part 1 was an introduction and talked about the changes as they moved from the Skype for Business Admin Centre to the Teams Admin Centre.  Part 2 described how to set them up using the Teams Admin Centre.

In this part, I go a little deeper and show you what’s possible with PowerShell.  Specifically, the Skype for Business Online PowerShell module.


Like all Microsoft products, there is only so much you can do in the UI or Control panel.  For everything else, you need PowerShell.  The reason is simple.  There’s often just too much to include in the UI.  Obscure things that most will never touch.  For those things, you turn to a PowerShell module that gives admins access to the basic things that you can do in the, plus the ability to fine tune and adjust things.

You can even set things up from scratch using the module and never have to use the UI.

This is a big subject which deserves some attention.  So I’m going to break this up into a mini series of its own.

  • Part 3a – The Basics (this post)
  • Part 3b – Make changes to an existing Auto Attendant or Call Queue
  • Part 3c – Create a new Auto Attendant and Call Queue
  • Part 3d – Extras


What do you need to get started?

First, you need the Skype for Business Online PowerShell module.  Unlike other modules, you need to download this module on your PC.

Supported Operating System

  • Windows 7 64-bit, Windows 8 64-bit, Windows 8.1 64-bit, Windows Server 2008 R2, Window Server 2012, Window Server 2012 R2, Windows Server 2016


  • Windows PowerShell 5.1 – See this link for download details.

Install the module

Download the SkypeOnlinePowershell.exe file and double click to start the “install”.  Then just follow the instructions on the screen to complete the installation.

The setup program copies the Skype for Business Online Connector module (SkypeOnlineConnector.psd1) to your computer.  in “C:\Program Files\Common Files\Skype for Business Online\Modules\SkypeOnlineConnector”.

Now you just need to import the module so you can invoke it whenever you want.  Just run the following in an elevated PowerShell window:

Import-Module SkypeOnlineConnector

You only need to do this once.

Connect to Skype for Business Online

Run the following in an elevated PowerShell window:

$sfbSession = New-CsOnlineSession

Import-PSSession $sfbSession

This will prompt you for the user principal name.  Enter the name and hit enter.  This will prompt you for the password.  Enter the password and click sign in.

New session authenticate

This will open a session

new session

What can you do

Now you can find all the commands available by doing a search using the Get-Command cmdlet.

Get-Command “*autoattendant*”

auto attendant commands

As you can see there is a lot of cmdlets available for Auto Attendants.  Fortunately, not all are necessary.

You know Microsoft likes to change names of things.  When Microsoft first launched the feature in Skype for Business Online, they were called Organizational Auto Attendants.  No idea why.  These were the “Generation 1” of the Auto Attendants in Skype Online.

Don’t believe me?  This is a little advanced for this post, but I’m going to attempt to create a basic Gen 1 Auto Attendant using the Gen 1 command.  I promise I will explain what all this means Part 3.

For now, just run the following:

$GreetingPrompt = New-CsAutoAttendantPrompt -TextToSpeechPrompt “This is the old way of creating an Auto Attendant”
$automaticMenuOption = New-CsAutoAttendantMenuOption -Action Disconnect -DtmfResponse Automatic
$Menu=New-CsAutoAttendantMenu -Name “Old menu” -MenuOptions @($automaticMenuOption)
$CallFlow = New-CsAutoAttendantCallFlow -Name “Old call flow” -Greetings @($GreetingPrompt) -Menu $Menu
New-CsOrganizationalAutoAttendant -Name “old way” -Language “en-US” -TimeZoneId “UTC” -DefaultCallFlow $CallFlow

You should get an error that reads “First generation provisioning is no longer supported. Please use the cmdlets which follow this format “*-CsAutoAttendant*” instead.

first gen error

All the commands with Organizational in the name are considered Generation 1.


I haven’t found any resources or posts from Microsoft to say anything about the changes.  Hopefully, Microsoft will get rid of them so there’s no confusion.  For now, I submitted feedback on all of the docs pages for each cmdlet with Organizational in the name.


Now if you only search for CSAutoAttendant.  You can see there is a much shorter list of Generation 2 cmdlets.

AA Only

Fortunately, there’s no Generation 1 version of Call Queues.  They remain unchanged.

Get-Command “*callqueue*”

call queue commands


Powershell commands (or cmdlets) are made up of two parts.  The Verb and the Noun.  PowerShell uses a “verb-noun” naming system.  Each cmdlet name consists of a standard verb, hyphenated with a specific noun.  PowerShell verbs express specific actions in PowerShell.

I know this is really basic for this post, but thought it was a good idea anyway.

  • You use the New verb to create a new AA or CQ
  • The Set verb to change or add something to an existing AA or CQ
  • You use Get to see what’s already been created
  • And Remove to get rid of one
  • Import and Export are only related to Holidays
  • Update is used to force an update of resources associated with an AA.  Currently, it repairs the Dial-by-Name recognition status of an auto attendant.  More info



More on these later…

That’s it for now.

Stay tuned to Part 3b where I’ll show you how to make changes to an existing Auto Attendant or Call Queue using PowerShell.