Scheduling a reboot via Windows 10 MDM

This week is also about configuring Windows 10 devices. This week is all about scheduling a reboot on a Windows 10 device by using Microsoft Intune and Windows 10 MDM. That can be useful for scheduling reboots on for example shared devices. Simply making sure that even those type of devices get a reboot every now and then, or making sure that specific configurations or installations are getting fully applied. This can be achieved by using the Reboot CSP. In this post I’ll have a look at the available policy settings and the configuration of those policy settings. I’ll end this post by having a look at the results of the configuration.

Available policy settings

The Reboot CSP can be used to configure reboot settings. That CSP contains only a few policy settings and methods (nodes). The required policy setting for this post is available as a policy setting (node) in this CSP. The root node of the Reboot CSP is ./Vendor/MSFT/Reboot and the table below describes the nodes below.

PolicyDescription
RebootNowThis node can be used to execute a reboot of the device. It will trigger a reboot within 5 minutes to allow the user to wrap up any active work. This method is used when triggering a Restart via the Intune console.
Schedule/SingleThis node can be used to execute a reboot of the device at a scheduled date and time. Setting a null (empty) date will delete an existing schedule. The date and time value is ISO8601, and both, the date and time, are required.
Example: 2019-10-01T22:00:00Z
Schedule/DailyRecurrentThis node can be used to execute a reboot of the device, each day, at a scheduled time starting at the configured time and date. Setting a null (empty) date will delete an existing schedule. The date and time value is ISO8601, and both, the date and time, are required.
Example: 2019-10-02T21:00:00Z

Configuring the policy settings

Now let’s continue by looking at the actual configuration of the different configurable policy settings of the Reboot CSP. That means configuring a single reboot schedule and a daily recurrent reboot schedule. This can be achieved by using a custom device configuration profile. The following four steps walk through the configuration of the single reboot schedule, by using the information of above (including the example values).

The daily recurrent reboot schedule can be achieved by following the same steps and simply adjusting the OMA-URI and the Value. The screenshots below show both configurations. Also, by using two different Data type configurations. After creating the profile, it can be assigned like any other device configuration profile.

  1. Open the Azure portal and navigate to Microsoft Intune Device configuration Profiles to open the Devices configuration – Profiles blade
  2. On the Devices configuration – Profiles blade, click Create profile to open the Create profile blade
  3. On the Create profile blade, provide the following information and click Create
  • Name: Provide a valid name
  • Description: (Optional) Provide a valid description
  • Platform: Windows 10 and later
  • Profile type: Custom
  • Settings: See step 4
  1. On the Custom OMA-URI Settings blade, provide the following information and click Add to open the Add row blade. On the Add row blade, provide the following information and click OK (and click OK in the Custom OMA-URI blade)
  • Name: Single reboot schedule
  • Description: (Optional) Provide a valid description
  • OMA-URI: ./Vendor/MSFT/Reboot/Schedule/Single
  • Data type: Select String
  • Value: 2019-10-01T22:00:00Z

Note: The same configuration can be achieved by using the Date and time data type and selecting the date and time in the UI (as shown below). Keep in mind that it will translate the selected date and time to the UTC time, which in my case is currently a 2 hour difference. To remove the schedule, use 0000-00-00T00:00:00Z as a value.

Result on the device

After assigning the created device configuration profile(s), it’s time to have a look at the results on a device. The Reboot CSP will create a scheduled task for the configured reboot schedules (as shown below). Those scheduled tasks are available at Microsoft > Windows > EnteriseMgmt > {EnrollmentID} > Reboot.

As I’ve configured a single reboot schedule and a daily recurrent reboot schedule, the screenshot below shows a task RebootCSP daily recurrent reboot and a task RebootCSP scheduled reboot. Those tasks are used for performing the actual reboots by using deviceenroller.exe -ForcedReboot.

After successfully rebooting multiple devices, I’ve noticed the following to keep in mind:

  • The Last Run Time of the scheduled tasks never updates after a reboot, as if the scheduled task is recreated with a new Next Run Time.
  • The result of the custom device configuration profile in Microsoft Intune still shows a Remediation failed error message, while the configuration is successful.

More information

For more information about the Reboot CSP, have a look at the documentation about the Reboot CSP.

29 thoughts on “Scheduling a reboot via Windows 10 MDM”

  1. Many thanks for the post Peter, which i have now applied & tested successfully via my pilot group. I do have one quick question regarding targeting this to certain device models (i.e. a static shared desktop, against a laptop)? The reason being, I have around 4500 Windows 10 devices, but ONLY want to reboot the shared static desktops. Do you know if this is possible via a Tag, or the Device Model attribute in Intune? Thanks. John

    Reply
  2. Many thanks for your response Peter.

    I have just had a chance to revisit the issue, & got the required results via the below steps:

    1) Created a custom OMA-URI with ‘./Vendor/MSFT/Reboot/Schedule/DailyRecurrent’ for a daily reboot.
    2) Create a Dynamic group deviceModel lookup ‘(device.deviceModel -startsWith “10T”) or (device.deviceModel -startsWith “10M”)’

    As devices checked in with 10T or 10M at the start of there Device Model, they were then automatically added to the Dynamic group. This is then targeted with my custom OMA-URI reboot profile.

    Regards
    John.

    Reply
  3. Will we be able to remind the user that the device is going to be rebooted and please save your changes at least 15 minutes in advance.

    Reply
    • Hi Ronald,
      Often it gives an error message, even after a successful configuration. That’s due to a mismatch between the value that was applied via an ADD and that was retrieved via a GET.
      Regards, Peter

      Reply
  4. Hi Peter –

    Thanks for your article.

    I am attempting to remove this previously added Custom Config profile schedule by changing the String in the existing OMA-URI value to 0000-00-00T00:00:00Z as you suggested, however this results in a profile assignment error across all Windows 10 devices when applied. Do you know why this might be happening?

    Reply
    • Hi Bob,
      Receiving an error doesn’t always mean that the configuration didn’t apply. Often errors can happen when the returned value doesn’t exactly match the provided value (something character related).
      Regards, Peter

      Reply
  5. Hi Peter,

    Do you know of a way to skip the reboot if a schedule was missed? We seem to have a lot of laptop users who put their machines to sleep overnight and when they open them in the morning, they get a reboot.

    Thanks, Dan.

    Reply
  6. Keep getting a Remediation error – ideas?
    -2016281112 (Remediation failed)

    ./Vendor/MSFT/Reboot/Schedule/DailyRecurrent
    2022-02-10T12:00:00Z

    Reply
  7. This worked great, but I chose to use data type date and time and now its grayed out when I want to go back and remove the entry so I can’t change it to string and use 0000-00-00T00:00:00Z.

    Any idea?

    Reply
  8. What about Surface Hub OS (Windows 10 Team). There is no Task Scheduler, its a poor OS… how to make a Surface Hub daily reboot over Intune

    Reply

Leave a Reply to Peter van der Woude Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.