For those looking planning to do in-place upgrades to migrate from Windows 7, Windows 8, or Windows 8.1 to Windows 10 using System Center Configuration Manager task sequences (described
), you might be interested in doing a “trial run” with existing systems to identify machines that may have issues. To support this, SETUP.EXE includes a command line switch that tells it to “check for compatibility” but not actually perform the upgrade. The full command line would typically look something like this:
It’s that last part, highlighted above, that does the trick. (You may or may not want to specify /DynamicUpdate Disable. Disabling it causes SETUP to not download the latest compatibility information from Windows Update, but it would be better if you could do this. That gets more interesting in ConfigMgr, but that’s a longer discussion.)
When you run this ScanOnly execution, the results are returned via return codes from SETUP.EXE itself. Here are the possible values:
No issues found: 0xC1900210
Compatibility issues found (hard block): 0xC1900208
Migration choice (auto upgrade) not available (probably the wrong SKU or architecture)· 0xC1900204
Does not meet system requirements for Windows 10: 0xC1900200
Insufficient free disk space: 0xC190020E
(You’ll see these return codes as large negative numbers, but they are much easier to look at in hex.)
So all you have to do is deploy a simple ConfigMgr package or task sequence to all your devices, with the full Windows 10 source media. It’s probably not a good idea to use download and execute or download on demand with ConfigMgr in this case – make sure you run SETUP.EXE from the network. It’s rather unproductive to download the INSTALL.WIM when you aren’t actually going to use it. But it does have to be there, SETUP.EXE will complain if it isn’t.
Once you’ve run this, you can create a report that shows the devices with each of the statuses. The first obviously requires no further action, and the last has an obvious course of action (try to free up some more space). But for the others you’ll probably want to review the SETUPACT.LOG or SETUPERR.LOG generated by SETUP.EXE to see what the specific error was.