A few weeks ago, I wrote a PowerShell script concerning the Teams Voice Admin Tool.
This script received a good response from the community, and I am very pleased that I was able to help some people with their daily work.

In the meantime, I have developed the script further and added more options.
Since the new functions can be helpful, but not everyone needs them, I have decided to rewrite my Voice Admin script and publish it as Teams Voice Admin tool – advanced.


What can the new advanced script do? What is different from the current script?

Well, on the one hand, I have added four more management options.
These are:

  • Adding/changing telephone number to Auto Attendant account
  • Assigning/changing caller ID policies
  • Assigning/changing User calling policies
  • Assigning/changing Auto Attendant voice routing policies (Outbound forwarding)


The reason for the new functions are my experiences with Teams Voice projects.
It is always the case (for me) that I build the target architecture as discussed with the customer. However, before going live, I always use test number blocks and test policies to test the built voice architecture. Once these tests are successfully completed, the final numbers and policies are assigned.
Especially when testing outbound call forwarding from Auto Attendants, it is important that the correct policies are set.

I like to work with CSV files so that the final changeover after the test period is successful, and I have a final check/overview of everything. I also prefer to use a tool for the migration that is structured so that I can work through all the tasks step by step.

Therefore, I have summarized some of my Teams Voice scripts here.

Chapters one to three continue to work as I described them in my previous article.

The new functions work self-explanatory and analogous to option 1 in the “old” script.

What is new in this script, however, is the format of the CSV file.
This now has several fields that have to be filled in and looks like this in this script:


Here is a corresponding screenshot:

As you can see, this type of CSV contains all the required variables. This helps to collect all the necessary information in one file and (as a bonus) can also be stored for the documentation repository.
I realize that not all fields are always needed.
In this case, the value $null can be entered for the corresponding field.

By the way, the value $null is also used to reset already set policies or telephone numbers.

I hope that this script will also be put to good use in the community…



As always, this script is available for free to anyone who needs it. You can download it from my GitHub repository and use it.

Also, as always, I assume no responsibility for possible misconfigurations and strongly recommend using the first run of this script in a LAB or test environment.

This script can be used and adapted indefinitely, but not sold to third parties.

Link to the Script on GitHub