One of the projects on the docket this year is to migrate away from Exchange UM as Microsoft has retired Exchange UM. Microsoft has Cloud voicemail as an option, but I am not a fan of cloud voicemail.
When migrating to a new voicemail system, the system attendant greeting and personal greetings are two very important features that either need to be recorded/setup again or if possible exported out and imported into the new voicemail system.
I find it very difficult to get users attentions to rerecord personal greetings. It puts a burden on the helpdesk/IT support staff and has the potential to delay the project.
With that in mind I started my search to find a script that would export users personal voicemail greetings.
Microsoft released a powershell module for Exchange called EWS-FAI, that allows for the ability to browse and update Exchange folders using EWS. This also allows for the ability to export items from someone's inbox.
To leverage the script I wrote, you will need the EWS-FAI module, you can install the module with the following command, Install-Module -Name EWS-FAI. You can find out more information about this module by going to this blog post.
Once that module is installed, you can then leverage powershell to export personal greetings.
When writing this script, I wrote it so it would export everyone's greeting. The sample script I found was for a single user.
I proceeded to rewrite the script so it would export the personal greetings for all users. I used the get-mailbox powershell command and filtered it out so it would only grab the primary email address. I fed this into a for-loop and boom, I had what I needed.
Hopefully someone will find this useful and it will assist others when then are migrating off of Exchange UM to a new voicemail system.
(Make sure you modify the folder that the voicemails are saved in to a valid path on the system you are running the script on. You will also need the Microsoft Exchange powershell module for this script to operate correctly.
Powershell Script Exporting Exchange UM Personal Greetings
$cred = Get-Credential
$MailboxName = Get-Mailbox -ResultSize Unlimited| Select-object -ExpandProperty primarysmtpaddress | %{[string] $x = $_ ; $x}
foreach($M in $MailboxName) {
$Item = Get-FAIItem -MailboxName $M -ConfigItemName Um.CustomGreetings.External -Folder root -ReturnConfigObject -Credentials $cred
[System.IO.File]::WriteAllBytes(("d:\um\" + $M + ".wav"),$Item.BinaryData)
}