Office 365 ProPlus has four different update channels:
- Monthly Channel (Targeted)
- Monthly Channel
- Semi-annual Channel (Targeted)
- Semi-annual Channel
In order to switch your client to different channels, you must change the CDNBaseUrl and UpdateChannel registry keys in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration. In the Set-Office365Channel function we will be using C:\Program Files\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe to update the CDNBaseUrl key and we will be automatically setting the UpdateChannel key. We are updating the UpdateChannel key because in my testing, SCCM would not deploy the new update channel patches if you did not set this key. After these two tasks are complete, the function will run a hardware inventory scan so SCCM can update the channel in the console.
How to use Set-Office365Channel:
- Switch to Monthly Channel (Targeted)
Set-Office365Channel -UpdateChannel Insiders - Switch to Monthly Channel
Set-Office365Channel -UpdateChannel Monthly - Switch to Semi-annual Channel (Targeted)
Set-Office365Channel -UpdateChannel Targeted - Switch to Semi-annual Channel
Set-Office365Channel -UpdateChannel Broad
Function Set-Office365Channel { <# .SYNOPSIS Change Office 365 Update Channel .PARAMETER UpdateChannel Provide update channel that you would like to use .EXAMPLE - Switch to Monthly Channel (Targeted) Set-Office365Channel -UpdateChannel Insiders .EXAMPLE - Switch to Monthly Channel Set-Office365Channel -UpdateChannel Monthly .EXAMPLE - Semi-annual Channel (Targeted) Set-Office365Channel -UpdateChannel Targeted .EXAMPLE - Semi-annual Channel Set-Office365Channel -UpdateChannel Broad #> param ( # Provide update channel that you would like to use [parameter(Mandatory=$True)] [ValidateSet('Insiders', 'Monthly', 'Targeted', 'Broad')] [string]$UpdateChannel ) $Channel = Switch ($UpdateChannel) { "Insiders" {"http://officecdn.microsoft.com/pr/64256afe-f5d9-4f86-8936-8840a6a4f5be"} "Monthly" {"http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60"} "Targeted" {"http://officecdn.microsoft.com/pr/b8f9b850-328d-4355-9145-c59439a0c4cf"} "Broad" {"http://officecdn.microsoft.com/pr/7ffbc6bf-bc32-4f92-8982-f9dd17fd3114"} } $Configuration = "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" If((Get-ItemProperty $Configuration).CDNBaseUrl -ne "$Channel") { # Update Channel Start-Process "C:\Program Files\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe" -ArgumentList "/changesetting Channel=$UpdateChannel" Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" -Name UpdateChannel -Value "$Channel" -Force # Trigger Hardware Inventory Invoke-WmiMethod -Namespace "root\ccm" -Class "SMS_Client" -Name "TriggerSchedule" -ArgumentList "{00000000-0000-0000-0000-000000000001}" } }
Deep
Great script! Can this be imported into ConfigManger “scripts”with parameters of ‘Insiders’, ‘Monthly’, ‘Targeted’, ‘Broad’? Also how would I delete this key from the script…”reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Office\16.0\Common\OfficeUpdate\ /f” … Recently ran into an issue where the update channel would not change until I deleted this key.
Thanks
Jose Espitia
Hi Deep,
All you need to do is add the reg delete command under
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" -Name UpdateChannel -Value "$Channel" -Force
.As for the scripts question, you can definitely add the script to your ConfigManager “Scripts”. Just copy and paste the function and then add the command underneath it.
Example on how to set your update channel to Semi-annual Channel (Targeted):
Function Set-Office365Channel {
param (
# Provide update channel that you would like to use
[parameter(Mandatory=$True)]
[ValidateSet(‘Insiders’, ‘Monthly’, ‘Targeted’, ‘Broad’)]
[string]$UpdateChannel
)
$Channel = Switch ($UpdateChannel) {
“Insiders” {“http://officecdn.microsoft.com/pr/64256afe-f5d9-4f86-8936-8840a6a4f5be”}
“Monthly” {“http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60”}
“Targeted” {“http://officecdn.microsoft.com/pr/b8f9b850-328d-4355-9145-c59439a0c4cf”}
“Broad” {“http://officecdn.microsoft.com/pr/7ffbc6bf-bc32-4f92-8982-f9dd17fd3114”}
}
$Configuration = “HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration”
If((Get-ItemProperty $Configuration).CDNBaseUrl -ne “$Channel”) {
# Update Channel
Start-Process “C:\Program Files\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe” -ArgumentList “/changesetting Channel=$UpdateChannel”
Set-ItemProperty “HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration” -Name UpdateChannel -Value “$Channel” -Force
# Trigger Hardware Inventory
Invoke-WmiMethod -Namespace “root\ccm” -Class “SMS_Client” -Name “TriggerSchedule” -ArgumentList “{00000000-0000-0000-0000-000000000001}”
}
}
Set-Office365Channel -UpdateChannel Targeted
Deep
Awesome! I’ll give this a shot. Thank again
Hardeep Singh
The script works great in SCCM. I couldn’t get “Remove-item” to work under “Set-ItemProperty” so I ended up doing it like this:
# Trigger Hardware Inventory
Invoke-WmiMethod -Namespace “root\ccm” -Class “SMS_Client” -Name “TriggerSchedule” -ArgumentList “{00000000-0000-0000-0000-000000000001}”
}
}
Remove-Item “HKLM:\SOFTWARE\Policies\Microsoft\office\16.0\common\officeupdate” -Recurse
Set-Office365Channel -UpdateChannel Targeted
Jose Espitia
Hardeep, I’m glad to hear the script worked great in SCCM. I personally would leave out Remove-Item “HKLM:\SOFTWARE\Policies\Microsoft\office\16.0\common\officeupdate” -Recurse outside of the function since you do not need to remove this registry key to change your update channel.
Hardeep Singh
I have to because the client at one point was setting the update channel from GPO. This GPO registry always take take precedence even if I change the update channel using the script.