Category Archives: ConfigMgr

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.


OSD – HP Driver Tips

Working on certifying drivers for some older model HPs in the shop. My options are:

1. Use Mikael Nystrom’s PowerShell is King ‚Äď Export drivers from Windows good stuff if you have a box already configured how you want and it’s not Windows 7

(do a get-command export* and you'll see you can't use export-windowsdriver in Win 7)

(do a get-command export* and you’ll see you can’t use export-windowsdriver in Win 7)

Good Windows 7 Options:

2.  If you get stuck installing a driver as an application, check in Program Files/Program Files (x86) for the unpacked files to see if an .inf was dropped there.  Be careful pulling the .inf file as some of the softpaqs need the software stack to work properly (see method 4 below for this scenario).

Found the driver for bluetooth in this folder in Program Files (x86)

Found the driver for Bluetooth for a ZBook in this folder in Program Files (x86)

3. If HP, I generally find the majority of the unpacked files in c:\swsetup and then I search Program Files.

C:\SWSetup is a common unpack directory for Support Assistant and manual installs.

C:\SWSetup is a common unpack directory for Support Assistant and manual installs.

4.  Another HP trick is to use the HP Softpaq Download Manager.  Once you load up the model you want, you can right click on any of the given drivers to get the fly out menu and select cva file.  If it exists, it will give you install + silent install instructions for those pesky drivers that need to be installed as applications.

Using HPSDM to get the driver package and install instructions.

Using HPSDM to get the driver package and install instructions.

Install instructions are in a cva that you open with notepad - then scroll to the install section.

Install instructions are in a cva that you open with notepad – then scroll to the install section.

A fun tip about the cva file is if you know the softpaq number, you can just find it in this URL  (this only works if there is actually a cva Рnot everything has one Рbut better than nothing, right??)

Upgrade your 2012 R2 SP1 ConfigMgr environment to 1602 #LikeABoss

Yesterday I went from CM 2012 R2 SP1 CU whatever to CM 1602.



It’s a really simple process, but if you haven’t done any kind of CM site upgrades before, maybe you feel a bit overwhelmed.¬† To get started to need to do two things.¬† The first being verify you have a backup.¬† If you don’t know how to do this, check out Steve Thompsons blog.

Next, go to your VLSC and download the required media.¬† (Note: I was already running a fully patched version of SQL Server 2014, so I didn’t need to download that media, and I wont be covering it in this post.)

After the download completes and you’re certain you have a backup of your site, I’d make sure the server that hosts your site is fully patched so that pending reboots don’t break the upgrade.


When you’re back up and running, mount the ISO and launch splash.hta which will start the application to perform the upgrade.

You’ll be greeted with this page that defaults to the upgrade so you can leave it as-is.

And you’ll need to accept three sets of EULAs before you can continue.

Now, just like in your production version of 2012, you have prereqs to download.¬† If you’ve already done so, here’s where you would tell the wizard to grab them for the install.¬† I prefer to keep anything that’s not the OS on my E:\ drive.

And if you did specify a path to download (aka you didn’t download the prereqs beforehand), the app will then initiate the download as soon as you click next (and it’s really quick too!).

When the download completes you can add language support.  While you  can add languages after the fact, if you plan to add support for anything other than the default, do it now please :).


You’ll then configure service connection point and select (the only option) setup type.¬† If you choose not to connect the service¬†now, you’ll have to do it after the fact.¬† So unless you have a really good reason not to, just connect now.

Next comes the prerequisite check for the upgrade.¬† You can ignore the warnings if you want, but you have to remediate all failures to be able to continue.¬† As you can see here, I needed to install USMT as well as remove Distribution Point role (the only role installed on that server – which is how I knew what to do ūüôā ) from the server that sat on the same cluster as my primary site.

You’ll click through a few more steps and then the upgrade starts.¬† You can watch what’s going on in the ConfigMgrSetup log on C:\ by opening it in CMTrace.

Go ahead and take a coffee break (I recommend this) because it will take a bit to complete.¬† When it’s done you can close the app.

Now comes the fun part – getting to 1602.¬† I, like an idiot had left the console open during the upgrade and saw in the setup log that the new console failed to install.¬† Even if I hadn’t seen it, I was blocked with an error message that told me I couldn’t connect to my site.¬† Before worrying about permissions, I decided to reinstall the console – if this happens to you, you can easily reinstall the console by navigating to your ISO and go to SMSSETUP\BIN\I386 and launch consolesetup.exe .

With the console open, go to Administration – Overview – Cloud Services – Updates and Servicing.¬† (As of today) You’ll see the upgrade for 1602.¬† Right click it and first run the prerequisite check and then finally right click again to install it.

Note:¬† You can choose to run against a non-production collection if you have such a thing ūüôā or you can go ahead straight to production.¬† Since I’m my own boss, I don’t have much of a reason to pick a collection to test against.

And when it’s finished you’ll need a new version of the console again.¬† This time, clicking Ok caused the console to upgrade without any manual work for me.

If you didn’t already have automatic client upgrades turned on, I really think you should.¬† I say this because I had it turned on and configured to what works for my environment as far as days to install the client.¬† It’s great because the new client package was already distributed for me and I can see that some of my endpoints already have the new client.¬† To turn it on, go to¬† Administration – Overview – Site Configuration – Sites and go to Heirarchy Settings (on the ribbon) and tick the box to allow the auto upgrade.

And finally you’ll want to check to make sure the client package has been distributed (and if it hasn’t you’ll need to do so) by going to¬† Software Library – Application Management – Packages.¬† While you’re in there, check on your boot images too by going to the Operating Systems node in Software Library – they get updated during the upgrade and therefore should be replaced on all your distribution points too.

Depending on the complexity of your environment or if you want to add or remove roles/features you’ll have more work to do.¬† Of course if you need help, you can always ping me on Twitter.


Finding ConfigMgr Current Branch in VLSC

Problem:¬† I need/want to upgrade my ConfigMgr¬†environment from 2012 R2 SP1 – 1602 but I can’t find it in my VLSC.¬† Does this mean I’m not licensed for it?

Answer: No.¬† It’s just poorly named.

If you’re looking for¬†ConfigMgr in your VLSC, it’s actually titled System Center Config Mgr Client Mgmt License (current branch).¬† Good lord that’s worse than spouting off which specific CU I have applied to my 2012 environment.


Click on the downloads tab to get to the software.

BTW, if you haven’t noticed it’s for 1511 release.¬† Currently the only way to get to 1602 is through servicing through¬†current branch¬†ConfigMgr implementation.¬† So whether you’re starting from scratch or from an older implementation, you have to use 1511 as your starting point.