Open an elevated powershell window and run the commands:
#Clears Restart registry to stop SCCM restarting the machine
Remove-Item -Path 'HKLM:\SOFTWARE\Microsoft\SMS\Mobile Client\Reboot Management\RebootData'
Remove-Item -Path 'HKLM:\SOFTWARE\Microsoft\SMS\Mobile Client\Updates Management\Handler\UpdatesRebootStatus\*'
Remove-ItemProperty -Name * -Path 'HKLM:\Microsoft\Windows\currentVersion\windowsupdate\Auto Update\RebootRequired'
shutdown -a
#Disable as it starts ccmexec back up
Disable-ScheduledTask -TaskPath "Microsoft\Configuration Manager" -TaskName "Configuration Manager Passport for Work Certificate Enrollment Task"
#Re-enable next boot
$Action = New-ScheduledTaskAction -Execute "schtasks.exe" -Argument '/Change /TN "Microsoft\Configuration Manager\Configuration Manager Passport for Work Certificate Enrollment Task" /enable'
$Trigger = New-ScheduledTaskTrigger -AtStartup; $Trigger.EndBoundary = (get-date).AddDays(90).ToString('s')
$Settings = New-ScheduledTaskSettingsSet -DeleteExpiredTaskAfter 00:00:30
Register-ScheduledTask -Force -user SYSTEM -TaskName "Enable CM Passport Enrollment" -Action $Action -Trigger $Trigger -Settings $Settings
Stop-Service ccmexec -Force
To use it in a run script and get feedback we need to delay the restart of the service using scheduled task
Remove-Item -Path 'HKLM:\SOFTWARE\Microsoft\SMS\Mobile Client\Reboot Management\RebootData'
Remove-Item -Path 'HKLM:\SOFTWARE\Microsoft\SMS\Mobile Client\Updates Management\Handler\UpdatesRebootStatus\*'
Remove-ItemProperty -Name * -Path 'HKLM:\Microsoft\Windows\currentVersion\windowsupdate\Auto Update\RebootRequired'
shutdown -a
#Disable as it starts ccmexec back up
Disable-ScheduledTask -TaskPath "Microsoft\Configuration Manager" -TaskName "Configuration Manager Passport for Work Certificate Enrollment Task"
#Re-enable next boot
$Action = New-ScheduledTaskAction -Execute "schtasks.exe" -Argument '/Change /TN "Microsoft\Configuration Manager\Configuration Manager Passport for Work Certificate Enrollment Task" /enable'
$Trigger = New-ScheduledTaskTrigger -AtStartup; $Trigger.EndBoundary = (get-date).AddDays(90).ToString('s')
$Settings = New-ScheduledTaskSettingsSet -DeleteExpiredTaskAfter 00:00:30
Register-ScheduledTask -Force -user SYSTEM -TaskName "Enable CM Passport Enrollment" -Action $Action -Trigger $Trigger -Settings $Settings
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument '-command Stop-Service ccmexec -Force'
$Trigger = New-ScheduledTaskTrigger -Once -At (get-date).AddSeconds(10); $Trigger.EndBoundary = (get-date).AddSeconds(60).ToString('s')
$Settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -DeleteExpiredTaskAfter 00:00:30
Register-ScheduledTask -Force -user SYSTEM -TaskName "Stop ccmexec" -Action $Action -Trigger $Trigger -Settings $Settings
Write-Host 'Restart cancelled. CCMEXEC Service will stop in 10 seconds'

Thanks @PotentEngineer and Russ for the code I mismashed together

Leave a Reply