I'm using the latest preview of Windows Server 2016 nano.

Using a remote powershell session, I connect to the remote system via Enter-PSSession, and then I tried to use the most common techniques to check Windows versions, because the full .Net framework is not available. Also, Get-WmiObject cmdlet is not available.

The only way I can see SOME information is with this non-powershell-command DISM:

Dism /Online /Get-Feature

That gives me this output plus a list of installed features:

Deployment Image Servicing and Management tool
Version: 10.0.10514.0

Image Version: 10.0.10514.0

Features listing for package : Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~10.0.10514.0

From the 10514 value, which is higher than my Windows 10 desktop, I can get some idea of the Kernel Build, and it is interesting that Windows 10 desktop has the same "Microsoft-Windows-Foundation-Package", but a lower kernel build number.

Has anyone found a cmdlet or some powershell function or alias that could be written, that will either detect for me the fact that my powershell script is running on a nano-server, in some way which is unlikely to break, or any command which will actually print out "Windows Server 2016 Nano Server"?

Update: This is closer to what I want, but is a bit of a hack:

  Get-Item -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion'

Update 2: Get-WmiObject is not present, and while the following works, it only reports kernel version:


Above will report build 10514, whereas Windows 10 client operating systems RTM reports 10240 at the moment, but the above is really a "kernel build" not an operating system product/edition/service-pack-level.

4 Answers 4


You could try the following, I've not got a nano server to try it out on. Drop the select if it gets you something else and see if what you want is stored under a different property in Server 2016 Nano

Get-CIMInstance -ClassName Win32_OperatingSystem -Property * | select caption

When tested on a real Nano instance the -session parameter was not needed, but if you need it at some future date, here's the variant with -session:

$cuser = "Your username"
$cservername = "Your Servername"
$csession = New-CimSession –Credential $cuser –ComputerName $cservername
Get-CIMInstance –session $csession -ClassName Win32_OperatingSystem -Property * | select caption
  • The session stuff is not necessary if you're already in a remote session you entered via Enter-PSSession so I suggested an edit.
    – Warren P
    Oct 8, 2015 at 13:28

This is just an extension on your edit, but cleans up the output, by getting only ProductName

$(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion' ProductName).ProductName
  • That's a nice improvement.
    – Warren P
    Oct 7, 2015 at 17:48

The Microsoft way aka the Cert way is to use the Get-WindowsEdition -Online

additional information on the command and all its options can be found at Here!

  • Very tiny amount of information in Get-WindowsEdition -Online reports only back Professional - does it report back Nano for nano server?
    – Warren P
    Aug 16, 2018 at 3:03

PowerShell Administrative command prompt and typing:

 Get-WmiObject -Class Win32_Operatingsystem


Build Number and Version
  • No way to see if that's nano or not
    – Warren P
    Aug 16, 2018 at 3:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .