Case of the Unexplained: Using PsKill to troubleshoot failed ConfigMgr update download

Every once in a while, I run unto a bit of bad luck downloading a new version of ConfigMgr technical preview. I can’t say I’ve ever had this exact problem happen to me in production, but I *know* it’s happened several times in my technical preview lab.

When a new update is available in the console, it will get stuck on downloading:

Console showing CM update is downloading
Console showing CM update is downloading.

One of the first troubleshooting steps you can do is restart the SMS_Executive service. If that doesn’t work then I like to stop/start the SMS_Executive service and empty the contents of the EasySetupPayload folder (found in the ConfigMgr install directory). But what happens when you can’t stop the service? This is where I have that “sometimes this happens, but only in this particular environment” problem. I can’t stop the service 🙁

The service is stuck in “stopping” and I can’t fix it at this point without some help from PsKill

I know this isn’t a limitation of a ConfigMgr environment because I can go to my “prod” (Current Branch) site server and stop that service quite easily. My first go-to at that point is to just reboot the site server. It’s a lab, and that’s a fairly benign and extremely useful troubleshooting tool to have available. I don’t know of too many places that are typically very happy for you to reboot production servers whenver you run into issues 🙂

After the site server came back from the reboot, I saw that I was still plagued with the same issue: the download is stuck and I can’t do anything to the service. At this point, I’m not exactly as happy to throw in another reboot as a troubleshooting step.

Einstein quote
I’m guilty of this probably more often than I should admit.

Now, the ConfigMgr team has published an update reset tool which I could have used, but it meant I needed to go find the TechNet article and remember how to run the tool (it’s really simple, and you can get more info at the bottom of this post).

The super fast way, to get to the bottom of the problem is to use PsKill. You can get the latest version of it from

I opened a command window as admin (note: I was already in PowerShell, but it’s not necessary to use PowerShell to run the tool. I was simply using PowerShell to try to stop the service first) and used the following syntax .\pskill.exe -t smsexec.

It’s not required to run the tool from PowerShell, I was simply using PowerShell to attempt to stop the SMS_Exec service

Once smsexec.exe was stopped, I could go into the EasySetupPayload folder and delete the update. At that point, I could restart the service, and I saw the download was pretty happy. Now I’m running the install.

How did I know to kill the smsexec process? If you go to properties on the service (from Services (msc) you get the path to the exe <install location>\Microsoft Configuration Manager\bin\x64\smsexec.exe. You can accomplish the same thing in Task Manager from the Services tab. Just right click the service and pick “go to details”- it takes you to the running process in the details tab.

By the way, if you want to use the Update Reset tool that the ConfigMgr team published, follow this link for more info: You need the package GUID, your site database name at the toplevel, the FQDN of the toplevel SQL server. The tool is located  If SQL is on the same box as your primary, then lucky you, you already know the FQDN and database 🙂 However, I’ve walked into plenty of environments where I wasn’t the one who architected the setup and documentation either doesn’t exist or wasn’t transferred. What typically goes hand in hand with that scenario is that opening a ticket to even get any info about the remote SQL (yuck, but I get why some companies do it) takes exponentially longer than running pskill would take.