Hello Community,

I would like to start a mini series for all of you who are also facing a Windows 10 inplace upgrade strategy. As an example, I will use the current 1903 build upgrade. This series will contain 3 blog post which will contain

1.) a precheck to detect upgrade issues or blocker in advance

2.) the preseeding of the binaries so that clients outside your network will smoothly download the gigabytes

      https://www.itninja.com/blog/view/kace-sma-windows-10-preseeding-large-files

3.) the upgrade itself

      https://www.itninja.com/blog/view/kace-sma-windows-10-inplace-upgrade


But first I will thank my former colleague and friend chrpetri. He did the development work at this scripts and helped me with testing all the functionality.


Today I want to start with part 1 the “Precheck”. The other posts will be published soon, and I will reference to them here.

This precheck-script is used for Windows 10 inplace upgrades, similar to a detection schedule in our Patch Management.

The prerequisite for this is that an unpacked Windows 10 ISO is available on a network share. Alternatively, the unpacked ISO can also be copied to the local clients. You can do it for example with the file synchronization functionality of our SMA.


Here you can download the exported script as well as the report and the custom inventory rule.

DOWNLOAD


This script can be executed silently in the background on the clients. This allows you to scan the clients in advance of a build upgrade and see where you might need to take action to update software or drivers on your endpoints.

After importing the script into your SMA you will find three dependencies.

The first is a 7-ZIP EXE to pack the log files and upload them to the SMA as the script progresses.

Furthermore, there is the "PreCheckWinX.cmd". This file is responsible for executing the setup.exe in the unpacked Windows 10 ISO. In addition, two variables are queried which are important in the further course of the script. The first variable is the path to the unpacked Windows 10 ISO. The second variable is the path to the log files, which is already given.

The third file is "WindowsSetupLogParser.vbs". This file is used to search the collected logs of the PreCheck for certain keywords. At the end a file is created, which shows us clearly where there may be errors.

Various tasks are performed in the script itself.

Among other things, it is checked whether the system has a lower Windows 10 Built version than 1903 in order to be eligible for an upgrade at all.

The log paths are then created, into which the logs from the PreCheck are stored.

In the third task the CMD file mentioned above is executed.

Note: Here you have to specify the path to your unzipped Windows 10 ISO file. In my script this is "\\192.168.50.1\install$\WinX1903\. Authenticated users should have read permissions on this path. The second path is the log path, and this does not need to be changed.

 


In the last task, the collected log files are packed with 7-ZIP and then uploaded to the SMA so that the log files can be accessed at any time from the SMA. In addition, the "WindowsSetupLogParser.vbs" is executed, which creates the file "WinSetupResults.log" at the end. We read this file with the imported Custom Inventory Rule so that the content is also available in the SMA.

As soon as the data is available in the SMA, a report can also be generated, which gives us a quick and easy overview of which scanned clients would successfully install the inplace upgrade or where there might still be problems.

Note: The ID of the Custom Inventory Rule is stored in the report, which is probably different for you. If so you have to change the report as follows.

First you must copy the ID. Navigate to "Inventory / Software" and click on "Inventory: Windows Setup Precheck Log". Now click into the address bar of your browser and copy out the ID. It is important that you open your SMA with https://SMA/adminui, otherwise you won't see the complete address line in your browser.

 

The query must then be adjusted in the "Windows Setup Precheck Log Parser Results" report. Navigate to "Reporting" and search for "Windows Setup Precheck Log Parser Results". After a click on the report, you will see the SQL Query. There you have to paste the previously copied ID.



The following is an example of the report:


 

In the following two examples how the WinSetupResult.log file can look like.

::MATCH: C:\WinX1903\PreCheck\Panther\CompatData_2019_04_25_12_27_19_3_006f0018.xml

[DriverPackage]

 - Inf: oem44.inf

 - BlockMigration: True

 - HasSignedBinaries: False

[DriverPackage]

 - Inf: oem43.inf

 - BlockMigration: True

 - HasSignedBinaries: False

 

Note: With such file contents, you need to navigate to "C:\Windows\INF" to see which drivers might block an upgrade. In this example it is the "Microsoft Windows XPS Document Writer" and the "Microsoft Windows Print to PDF" driver which would not block the inplace upgrade.

 

::MATCH: C:\WinX1903\PreCheck\Panther\CompatData_2019_04_26_13_25_01_3_006f0018.xml

[HardwareItem]

 - HardwareType: Generic

     [CompatibilityInfo]

      - BlockingType: Hard

 - Message: Your PC has hardware that is not yet ready for this version of Windows 10. No action is required. This version of Windows 10 is automatically offered by Windows Update once the problem is resolved.

      - Title: This PC cannot be upgraded to Windows 10.

[DriverPackage]

 - Inf: oem1.inf

 - BlockMigration: True

 - HasSignedBinaries: False

[DriverPackage]

 - Inf: oem0.inf

 - BlockMigration: True

 - HasSignedBinaries: False

::MATCH: C:\WinX1903\PreCheck\Panther\CompatData_2019_04_26_13_25_01_3_006f0018.xml

[HardwareItem]

 - HardwareType: Generic

     [CompatibilityInfo]

      - BlockingType: Hard

 - Message: Your PC has hardware that is not yet ready for this version of Windows 10. No action is required. This version of Windows 10 is automatically offered by Windows Update once the problem is resolved.

      - Title: This PC cannot be upgraded to Windows 10.

[DriverPackage]

 - Inf: oem1.inf

 - BlockMigration: True

 - HasSignedBinaries: False

[DriverPackage]

 - Inf: oem0.inf

 - BlockMigration: True

 - HasSignedBinaries: False

 

There are several hardware drivers installed that are not compatible with the 1903 build, and these would need to be updated before the upgrade can be performed. However, this evaluation may also include applications that might block the upgrade. Usually antivirus programs are detected that should be updated first before the inplace upgrade is performed.


I hope this article helps you to get the needed insights before upgrading your endpoints to a new build version. If there are any questions or problems, do not hesitate to use the comment function and let me know.