Windows 10 Feature Update

Kaseya Automation Team
Kaseya Automation Team Member, Kaseya Certified CHOCOLATE MILK
edited January 2022 in Solutions

Product Name: Windows 10 Feature Update

Description : This agent procedure will upgrade Windows 10 to Build 1909 to - This solution will audit and upgrade Windows 10 Feature to the latest version.

Instructions :

Please see attached pdf for install instructions
«13

Comments

  • Daniel Valenti
    Daniel Valenti Member CHOCOLATE MILK
    edited January 2020

    Is there any way to prevent the auto reboot? 

  • Kaseya Automation Team
    Kaseya Automation Team Member, Kaseya Certified CHOCOLATE MILK
    edited January 2020

    Yes, you would need to add the "/noreboot" switch on line 16

  • Wouter Keizer
    Wouter Keizer Member
    edited January 2020

    Hi, im running in to an issue with windows 7 PRO OEM

    OS is activated but check of this script says it is not.

    Therefore upgrade is not starten.

    Any idea what the cause could be?

  • Johan
    Johan Member
    edited January 2020

    @Wouter Possibly a language thing? Check what language Windows reports the activation status in. Run the PoSH command manually for this. Adapt the script as needed.

  • Richard Gericke
    edited January 2020

    Doesn't work for Enterprise Edition 

  • Wouter Keizer
    Wouter Keizer Member
    edited January 2020

    Sounds good but im not very good with Powershell or scripting language.

    What command should i run from the script in local PowerShell.

    OS is Dutch by the way.

  • Johan
    Johan Member
    edited January 2020

    Sorry, I messed up, this script should not mess up with other languages (the 1903 one does). Run this on the target machine, if it returns 1, it should run fine:
    (Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" | where { $_.PartialProductKey }).LicenseStatus

  • Martijn Wenke
    Martijn Wenke Member CHOCOLATE MILK
    edited January 2020

    Sometimes the script estimated that there was not enough free space, but there was more that 32 GB. The command '((Get-PSDrive C).Free/1GB)' returned for example 104,748271942139. I changed the Powershell command to fix this issue with a cast to integer: [int]((Get-PSDrive C).Free/1GB). At the same system this command returned 105, so it could continue with the next steps.

  • Gertjan
    Gertjan Member CHOCOLATE MILK
    edited January 2020
    Does this script work on NL versions?
  • mreyesleal@gmail.com
    edited February 2020

    Guys, im really new on this, its there any ways to check the steps on doing this?

    Thanks!!!!

  • Phil
    Phil Member
    edited February 2020

    I am new to this too.  What do I do with this file/script once I download it?

  • Kim
    Kim Member
    edited February 2020

    Is there any known fix to get this to work on the enterprise edition of Windows 10?

  • Anthony Byrd
    Anthony Byrd Member
    edited February 2020

    Running into same problem as @wouter and after trying to run the command you specified it returns that Get-CimInstance is not a recognized internal command. 

  • Laurens Driessen
    edited March 2020

    Hi there,

    For most VM's and systems the Agent Procedure finished succesfully.

    About the failed ones I got the same issue as @Martijn Wenke:
    "Sometimes the script estimated that there was not enough free space, but there was more that 32 GB."

    The W10 Home (x64 + activated + 1903 build) system which failed has 196GB free disk space. 
    What could cause this and how to fix this? 



  • Johan
    Johan Member
    edited March 2020

    It's because of regional setting (dot vs comma). Just round down to the GB to avoid this. Replace the first PoSH command in the procedure by this one:
    [math]::Round((Get-PSDrive c | Select-Object -ExpandProperty Free)/1GB,0)

  • Laurens Driessen
    edited March 2020

    @Johan

    Thank you, that did the trick.

  • David Horvath
    David Horvath Member
    edited March 2020

    I am trying to run the procedure on a windows 10 VM and I keep getting the error message: Script Summary: Failed Then in step 2(line 3).  I'm guessing this is the same problem that occurred with Martijn Wenke had but, I'm not sure how to resolve this.   Would I just replace 

    ((Get-PSDrive C).Free/1GB)

     With 

     [int]((Get-PSDrive C).Free/1GB)

    Thanks for any help


  • Brian McLaughlin
    edited May 2020

    I'm getting "SUCCESS THEN" returned as the status, but nothing seems running or updating. The status is showing success after only about 5 minutes.

    Any idea what might cause this?

  • Chris Amori
    Chris Amori Member CHOCOLATE MILK
    edited May 2020

    Brian, "Success Then" is just a Kaseya response saying it ran the script with no syntax failures.    If the script is not working, it is likely that your machine can't be upgraded for some reason.     My suggestion would be to run the updater manually and see what error is preventing it from installing.

  • Chris Amori
    Chris Amori Member CHOCOLATE MILK
    edited May 2020

    BTW, can anyone confirm that the /noreboot actually works?    In my initial testing of the upgrade utility, it would ignore this.


  • Brian McLaughlin
    edited May 2020

    No errors when I log in remotely and manually run windows update. I have been doing it this way for a week now on some ~100 computers to get them up to date (mind numbing). Trying to find a way to push this to another 500+ computers so that this isn't a month long project.



  • Jonathan
    Jonathan Member CHOCOLATE MILK
    edited May 2020

    Hi Brian. The procedure itself finishes pretty quickly but the actual upgrade takes 45 minutes to multiple hours and will continue well after Kaseya reports the procedure has completed "successfully".    I've relied on a combination of patience (just wait 2 hours after running) and View to check the OS build number.   If the OS build number hasn't' changed after 2 hours, then it probably failed.      We've been able to upgrade 900+ machines using this method with a high success rate. 

  • Brian McLaughlin
    edited May 2020

    Thank you for the help guys, I will continue to monitor. If I log in remotely the computers don't seem to be installing anything in the background, or rebooting.

    Didn't see anything failing in the procedures log so maybe it just hasn't had enough time.

    Appreciate the help

  • Cees
    Cees Member CHOCOLATE MILK
    edited May 2020

    Hi Brian, maybe u can also use Microsoft SetupDiag to determine what the cause is of the unsuccessful upgrade. https://docs.microsoft.com/en-us/windows/deployment/upgrade/setupdiag


  • Rich Tyree
    Rich Tyree Member
    edited May 2020

    Agree with @Johnathan comment, i have used an unmodified version, you really should allow the reboots however. I have hit my system in bunches of 50 then wait 15 minutes -  launch the next 50, only so that i am not saturating my known links. this would vary for your use i would assume but the largest i have have deployed in one sitting was about 300 (i had a weekend) and it took 9 hours for the last one to come online.

    I use views with filters for the OS build version, then i can get granular by dropping into the organization.

    I have completed hundreds (if not thousands by now) of updates using this script as well, with very high successes rate, when they did fail, and on review, i had issues on the system. Corrupt installer was number one, less than 30GB free was two and the other was unhealthy disk. none of the failed installs crippled my systems, it just says successful and does not complete.

    for me i run a post cleanup stored procedure though to clear out the leftover files, not just form the update bot overall clean. 

    Hope this was helpful

  • Jay Jansen
    Jay Jansen Member CHOCOLATE MILK
    edited May 2020

    A cleaner way to see the windows 10 version is to use a custom column and a script to query the releaseID from the registry that will give you the friendly 1809/1903/1909/etc version. Then you can build views on this (example <1903 on that custom value in the advanced editor)or do exports from manage agents to get a good overview of the current state of a client without having to decipher the build numbers.

    Query example if you want to see the data and adapat to your own script:

    reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v releaseid

    Once you have a script then you can just add it to your existing deployment script to be called via executeprocedure and set it to run 2hr from that time or so.

  • Andreas Exner
    Andreas Exner Member
    edited May 2020

    or with Powershell : Get-ComputerInfo | Select-Object -ExpandProperty Windowsversion

  • Andreas Exner
    Andreas Exner Member
    edited May 2020

    Douglas? Where exactly did you get the commandline switches from?

  • Kaseya Automation Team
    Kaseya Automation Team Member, Kaseya Certified CHOCOLATE MILK
    edited May 2020

    @Andreas I believe this is the article I used, it's been a little while though: 
    https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-setup-command-line-options

  • Kaseya Automation Team
    Kaseya Automation Team Member, Kaseya Certified CHOCOLATE MILK
    edited May 2020