When was My Windows 10 Originally Installed?

9

There are a few ways to find out when your Windows system was installed. For example, you can run the following command in Command Prompt window.

SystemInfo | Find /i "Install Date"
image 41 - When was My Windows 10 Originally Installed?

Or a PowerShell command like this:

(Get-CimInstance -Class Win32_OperatingSystem).InstallDate

image 42 - When was My Windows 10 Originally Installed?

But wait, that doesn’t seem to be right. The time shown in both commands is the day I upgraded my Windows 10 to the latest feature update, not it was originally installed long time ago. It seems that the InstallDate property in the System gets overwritten every time a major feature update is installed.

So how can I get the exact date and time when my Windows was originally installed?

Luckily, Windows still keeps track of the update history and it was saved in the following registry location, under the name like Source OS followed by the updated date.

HKEY_Local_Machine\System\Setup
image 43 - When was My Windows 10 Originally Installed?

Now, let’s use PowerShell to pull this information in a much clear way.

Get-ChildItem -Path HKLM:\System\Setup\Source* | 
ForEach-Object {Get-ItemProperty -Path Registry::$_} |
Select-Object ProductName, ReleaseID, CurrentBuild, @{n="Install Date"; e={([DateTime]'1/1/1970').AddSeconds($_.InstallDate)}} |
Sort-Object "Install Date"

And here we go.

image 45 600x200 - When was My Windows 10 Originally Installed?

According to this, my computer was originally installed on Aug 12, 2016, and it was Windows 7 Pro. It was upgraded to Windows 10 Pro on Jan 18, 2017. The last update before the current version was done on July 10, 2018. Note that all dates listed here are in UTC format.

Remember, the list of installation dates doesn’t include the latest update. You will still use the first couple commands described in this post to find out when your current Windows 10 build was installed.

9 COMMENTS

  1. Excellent script! Works very well. Thank you so much!
    Question: is it possible to run this script on multiple computers, for example using Group Policy, and have it output the results for each computername in a given domain to a single file, for example on a share?
    I am just asking because that would be really handy to have, and I am afraid that is way beyond my own powershell scripting abilities.

    • You can use either Invoke-Command or open remote computer’s registry like this:
      $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘LocalMachine’, $computer1)
      And then use the script in the post. But I haven’t tested. I might update the post later when I have the chance to test it out.

  2. I was pretty disappointed that Systeminfo stopped showing the actual original, clean build date. A fundamental thing to check when you are looking at whether to update machines. This is the only place I’ve seen an alternative, accurate way to determine it.
    Thanks heaps Kent!

  3. This will not return the original installation date but rather the date of the last installed major update or service pack. Rather look at the date of the bootmgr.ini file in your boot drive’s root.

LEAVE A REPLY

Please enter your comment!
Please enter your name here