Change your Office 365 ProPlus Update Channel using SCCM

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

    }

}

6 Comments

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

      April 23, 2019 at 6:33 pm

      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

      • 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

            May 29, 2019 at 5:20 pm

            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.

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

Leave a Reply to Jose Espitia Cancel reply