Windows 10 Compatibility Scan with Configuration Manager


Before deploying Windows 10, it's a good idea to check the readiness of your existing machines running Windows 7, 8/8.1, Or even Windows 10.

In this blog post I will use setup.exe with /compat scanonly switch to check the compatibility without performing the upgrade. The reason for not choosing the Upgrade task sequence for this job is to avoid sending the whole 3.5 GB source files over the network.

Package & Command line

Here's the command line with switches to silently check the compatibility. setup.exe /Auto Upgrade /Quiet /NoReboot /Compat ScanOnly

Since the clients don't need to download the full set of source files to check the compatibility, as the setup.exe only validates the existence of the files which can be even on a network share. Instead of creating a package with full set of source files, all i am using is a 1KB batch file to call a network share where the source files are located.

Command line of the batch file: -

start /wait \\<ServerShare>\setup.exe /Auto Upgrade /Quiet /NoReboot /Compat ScanOnly

exit /b %errorlevel%

The client will still download some source files which is significantly less than the whole set. Here's a snapshot of the SMB traffic during this operation -

Program

The program for the package above simply executes the batch file. Based on the above network traffic, you might want to set the estimated disk space and the Max allowed run time.

It should run regardless a user is logged on or not.

Results

The resultant output of the scan results is not the typical 0 for success, refer the table below for the list expected Decimal Output returned by ConfigMgr and Hex Code returned by the windows setup log files.

Reporting

For reporting purposes, you can leverage the attached report which takes the package name as input. Refer the screenshot below.

Task Sequence

The above package can also be called out in a Task Sequence where you can add additional steps to capture logs in case of failure. Attaching the exported TS for reference.

Step 1 – Add an Install Package step to run the above package. Make sure you check the box Continue on error in the Options tab.

Step 2- Add a group to Capture Logs if the result is anything other than -1047526896 which is Success/No issues found.

Step 3 – Map Network Drive to a server share where you want to dump the log files

Step 4 – Create Folder for each computer.

Step 5 – Copy the Log files to the network share.

Step 6 – Copy the XML files to the network share.

Step 7 – Disconnect the Network Drive

Reporting – TS

Refer the attached report which takes the Task Sequence name as input to display the compatibility results. Screenshot below.

Download Reports - Note – The reports are built using SSRS 2016 schema.

Legacy Reports - For importing into SSRS 2008 R2, 2012 & 2014

Download Task Sequence

 

 

Thanks,

Arnab Mitra

Comments (8)

  1. Cordell says:

    I get an incompatibility error when importing reports due to being created with 2016. I am still on 2012. Would it be possible to save your reports with a lower version? Thanks.

    1. I just uploaded the legacy version for download.

  2. Andy Kirby says:

    Will this show what software in not compatible with Windows 10 in the log or XML file?

    1. This reports the setup return code, you still need to dig into the XML files for the non-compatible software.
      Use the TS method to capture these in a centralized location for a later review and possibly use OpsMgr/OMS to read and report against them.

  3. Mike says:

    The Legacy Report for Windows 10 Compat Scan:
    – displays #Error for Scan Code – Hex and Description.
    – displays task sequence description rather than Compat Scan Code.
    – also the selection drop down box for Package Name, shows the Task sequences, should this be the Package?

    The Legacy Report for Windows 10 Compat Scan – TS displays as per the article.

    1. Hi Mike, the query for the selection drop down box for package name is “select distinct PackageName from vSMS_ClassicDeploymentAssetDetails”. Run this to validate you get the expected results.
      The rest is expected if the selected package is not the Windows 10 Compat Scan package you deployed.

      1. Mike says:

        Hi Arnab, the query “select distinct PackageName from vSMS_ClassicDeploymentAssetDetails” pulls back a list of Task Sequences, it should be showing me the sccm package/program that I created right?

        1. Actually TS is also considered as a classic deployment and hence returned as a result. To filter TS, modify the parameter to add a where clause like this –
          where ProgramName != ‘*’

Skip to main content