Freigeben über


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

  • Anonymous
    September 25, 2017
    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.
    • Anonymous
      September 25, 2017
      I just uploaded the legacy version for download.
  • Anonymous
    September 25, 2017
    Will this show what software in not compatible with Windows 10 in the log or XML file?
    • Anonymous
      September 25, 2017
      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.
  • Anonymous
    October 01, 2017
    The comment has been removed
    • Anonymous
      October 01, 2017
      The comment has been removed
      • Anonymous
        October 01, 2017
        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?
        • Anonymous
          October 01, 2017
          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 != '*'
  • Anonymous
    April 01, 2018
    The comment has been removed
    • Anonymous
      April 03, 2018
      Hi Deepak, it seems you are lacking permissions on the DB level. Check SSRS report security permissions if you need to be explicitly added to ConfigMgr reporting roles.
      • Anonymous
        April 06, 2018
        Thanks Arnab for the response. That issue, is resolved, I am able to run the report, however, for scan code and description, I only get #Error. I look at the report and It seems, I need to add an expression to translate the results? is that correct? If yes, could you please help with the expression.
        • Anonymous
          April 06, 2018
          Hi Deepak, the expressions are already part of the report export and doesnt need any modifications.I'd suggest re-importing the report in SSRS. If this doesnt resolve the issue, edit the report to view the expressions if there is any error?
          • Anonymous
            April 08, 2018
            The comment has been removed
            • Anonymous
              June 18, 2018
              I just tested this on a 1802 lab and was able to see the expected data in report. The StatusDescription column is expected to return a decimal value and not text.
  • Anonymous
    November 18, 2018
    HiHow do i analyse *.xml and *.log files to find more detail about why specific system fails?
  • Anonymous
    March 27, 2019
    Hi Arnab,I've created a package and deployed to a test machine. Imported the report into SCCM, changed the data source to the SQL instance and changed the catalog to the CM_(Site Code) when i run it I get:Compat Scan Code - Program completed with successScan Code Hex - #ErrorDescription - #ErrorAny suggestions? Thanks
    • Anonymous
      March 30, 2019
      The comment has been removed