Windows Vista Forums
Vista Forums Home Join Vista Forums Donate Vista Tutorials Tags

Welcome to Vista Forums we are your forum to discuss Windows Vista x64 and x86 systems. Whether you need help or just want to post an idea you have on Vista, this is the forum for you.
Register at Vista forums...the world biggest Windows Vista resource Join Vista Forums Now

Go Back   Vista Forums > Microsoft Technical Newsgroups > PowerShell

Reliable way to get Windows Version?

Update your Vista Drivers Update Your Drivers Now!!
Closed Thread
 
Thread Tools Display Modes
Old 03-17-2008   #1 (permalink)
Charlie Russel - MVP
Guest


 

Reliable way to get Windows Version?

I need a way to determine what Windows version and edition a script is
running on. I can get the build number, that's trivial:

$Build=(get-item 'HKLM:/Software/Microsoft/Windows
NT/CurrentVersion').getvalue('CurrentBuildNumber')

But it doesn't much help when Windows Vista SP1 is 6001 and so is Windows
Server 2008. And also doesn't tell me which edition. The ProductID:

$ProductID=(get-item 'HKLM:/Software/Microsoft/Windows
NT/CurrentVersion').getvalue('ProductID')

could probably do it, but I'm not at all sure what I'm looking at there, and
how to parse it for what's important. First, does anyone know a reference
that gives the relevant numbers for the various editions of Windows. And
second, could someone suggest a regex to parse it into consituent parts? Or,
alternately, does someone have a better location to get the version and
edition of Windows?

Thanks,

--
Charlie.
http://msmvps.com/xperts64
http://mvp.support.microsoft.com/profile/charlie.russel



My System SpecsSystem Spec
Old 03-17-2008   #2 (permalink)
Jon
Guest


 

Re: Reliable way to get Windows Version?

"Charlie Russel - MVP" <charlie@xxxxxx> wrote in message
news:6116302E-00CF-46C6-A17B-4F35EA5575C9@xxxxxx
Quote:

>I need a way to determine what Windows version and edition a script is
>running on. I can get the build number, that's trivial:
>
> $Build=(get-item 'HKLM:/Software/Microsoft/Windows
> NT/CurrentVersion').getvalue('CurrentBuildNumber')
>
> But it doesn't much help when Windows Vista SP1 is 6001 and so is Windows
> Server 2008. And also doesn't tell me which edition. The ProductID:
>
> $ProductID=(get-item 'HKLM:/Software/Microsoft/Windows
> NT/CurrentVersion').getvalue('ProductID')
>
> could probably do it, but I'm not at all sure what I'm looking at there,
> and how to parse it for what's important. First, does anyone know a
> reference that gives the relevant numbers for the various editions of
> Windows. And second, could someone suggest a regex to parse it into
> consituent parts? Or, alternately, does someone have a better location to
> get the version and edition of Windows?
>


There are a number of ways you could get relevant information. Parsing the
product id sounds a bit of an extreme approach imho ;-) [although possible
and worth a thread in itself]

From the registry as you mentioned under

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

(Get-Item "HKLM:SOFTWARE\Microsoft\Windows
NT\CurrentVersion").GetValue("ProductName")
(Get-Item "HKLM:SOFTWARE\Microsoft\Windows
NT\CurrentVersion").GetValue("EditionID")

would distinguish between Windows Server 2008 and Vista

Other options ..
(Get-Item "HKLM:SOFTWARE\Microsoft\Windows
NT\CurrentVersion").GetValueNames()



or you could use Win32_OperatingSystem

Get-WmiObject Win32_OperatingSystem | fl -property *

eg

(Get-WmiObject Win32_OperatingSystem).Caption
(Get-WmiObject Win32_OperatingSystem).BuildNumber

OR

[environment]:sversion

eg

[environment]:sversion.Version.ToString()

and split further....


[environment]:sversion.Version.Major
[environment]:sversion.Version.Minor
[environment]:sversion.Version.Build
[environment]:sversion.Version.Revision


A combination of the above should provide you with sufficient information.



--
Jon



My System SpecsSystem Spec
Old 03-17-2008   #3 (permalink)
Shay Levi
Guest


 

Re: Reliable way to get Windows Version?


You can also try the plain old DOS ver command:


# on XP box
PS> cmd /c ver
Microsoft Windows XP [Version 5.1.2600]

# on Win2003 server R2 x64
PS> cmd /c ver
Microsoft Windows [Version 5.2.3790]

# on Windows 2000 STD Server SP4
PS> cmd /c ver
Microsoft Windows 2000 [Version 5.00.2195]




-----
Shay Levi
$cript Fanatic
http://scriptolog.blogspot.com
Quote:

> I need a way to determine what Windows version and edition a script is
> running on. I can get the build number, that's trivial:
>
> $Build=(get-item 'HKLM:/Software/Microsoft/Windows
> NT/CurrentVersion').getvalue('CurrentBuildNumber')
>
> But it doesn't much help when Windows Vista SP1 is 6001 and so is
> Windows Server 2008. And also doesn't tell me which edition. The
> ProductID:
>
> $ProductID=(get-item 'HKLM:/Software/Microsoft/Windows
> NT/CurrentVersion').getvalue('ProductID')
>
> could probably do it, but I'm not at all sure what I'm looking at
> there, and how to parse it for what's important. First, does anyone
> know a reference that gives the relevant numbers for the various
> editions of Windows. And second, could someone suggest a regex to
> parse it into consituent parts? Or, alternately, does someone have a
> better location to get the version and edition of Windows?
>
> Thanks,
>

My System SpecsSystem Spec
Old 03-17-2008   #4 (permalink)
Andy Schneider
Guest


 

Re: Reliable way to get Windows Version?

get-wmiobject win32_operatingsystem

This will give you BuildNumber and Version

Andy
http://get-powershell.com




"Charlie Russel - MVP" <charlie@xxxxxx> wrote in message
news:6116302E-00CF-46C6-A17B-4F35EA5575C9@xxxxxx
Quote:

>I need a way to determine what Windows version and edition a script is
>running on. I can get the build number, that's trivial:
>
> $Build=(get-item 'HKLM:/Software/Microsoft/Windows
> NT/CurrentVersion').getvalue('CurrentBuildNumber')
>
> But it doesn't much help when Windows Vista SP1 is 6001 and so is Windows
> Server 2008. And also doesn't tell me which edition. The ProductID:
>
> $ProductID=(get-item 'HKLM:/Software/Microsoft/Windows
> NT/CurrentVersion').getvalue('ProductID')
>
> could probably do it, but I'm not at all sure what I'm looking at there,
> and how to parse it for what's important. First, does anyone know a
> reference that gives the relevant numbers for the various editions of
> Windows. And second, could someone suggest a regex to parse it into
> consituent parts? Or, alternately, does someone have a better location to
> get the version and edition of Windows?
>
> Thanks,
>
> --
> Charlie.
> http://msmvps.com/xperts64
> http://mvp.support.microsoft.com/profile/charlie.russel
>
>
My System SpecsSystem Spec
Old 03-17-2008   #5 (permalink)
Charlie Russel - MVP
Guest


 

Re: Reliable way to get Windows Version?

No help - returns the same for any version of Vista with SP1 as it does for
Server 2008 RTM. But a good way to get the build number, certainly.

--
Charlie.
http://msmvps.com/xperts64
http://mvp.support.microsoft.com/profile/charlie.russel


"Andy Schneider" <andy@xxxxxx-powershell.com> wrote in message
news:9265C697-5DE4-4C8E-BAD3-B8023214FA79@xxxxxx
Quote:

> get-wmiobject win32_operatingsystem
>
> This will give you BuildNumber and Version
>
> Andy
> http://get-powershell.com
>
>
>
>
> "Charlie Russel - MVP" <charlie@xxxxxx> wrote in message
> news:6116302E-00CF-46C6-A17B-4F35EA5575C9@xxxxxx
Quote:

>>I need a way to determine what Windows version and edition a script is
>>running on. I can get the build number, that's trivial:
>>
>> $Build=(get-item 'HKLM:/Software/Microsoft/Windows
>> NT/CurrentVersion').getvalue('CurrentBuildNumber')
>>
>> But it doesn't much help when Windows Vista SP1 is 6001 and so is Windows
>> Server 2008. And also doesn't tell me which edition. The ProductID:
>>
>> $ProductID=(get-item 'HKLM:/Software/Microsoft/Windows
>> NT/CurrentVersion').getvalue('ProductID')
>>
>> could probably do it, but I'm not at all sure what I'm looking at there,
>> and how to parse it for what's important. First, does anyone know a
>> reference that gives the relevant numbers for the various editions of
>> Windows. And second, could someone suggest a regex to parse it into
>> consituent parts? Or, alternately, does someone have a better location to
>> get the version and edition of Windows?
>>
>> Thanks,
>>
>> --
>> Charlie.
>> http://msmvps.com/xperts64
>> http://mvp.support.microsoft.com/profile/charlie.russel
>>
>>
>
My System SpecsSystem Spec
Old 03-17-2008   #6 (permalink)
Charlie Russel - MVP
Guest


 

Re: Reliable way to get Windows Version?

Won't help - returns the exact same for Server 2008 and Vista with SP1. (and
has the same problem with XP x64 and Server 2003 SP1). And doesn't give me
edition so I can branch on features available.

--
Charlie.
http://msmvps.com/xperts64
http://mvp.support.microsoft.com/profile/charlie.russel


"Shay Levi" <no@xxxxxx> wrote in message
news:8766a94423a778ca5635947a6762@xxxxxx
Quote:

>
> You can also try the plain old DOS ver command:
>
>
> # on XP box
> PS> cmd /c ver
> Microsoft Windows XP [Version 5.1.2600]
>
> # on Win2003 server R2 x64
> PS> cmd /c ver Microsoft Windows [Version 5.2.3790]
>
> # on Windows 2000 STD Server SP4
> PS> cmd /c ver
> Microsoft Windows 2000 [Version 5.00.2195]
>
>
>
>
> -----
> Shay Levi
> $cript Fanatic
> http://scriptolog.blogspot.com
>
Quote:

>> I need a way to determine what Windows version and edition a script is
>> running on. I can get the build number, that's trivial:
>>
>> $Build=(get-item 'HKLM:/Software/Microsoft/Windows
>> NT/CurrentVersion').getvalue('CurrentBuildNumber')
>>
>> But it doesn't much help when Windows Vista SP1 is 6001 and so is
>> Windows Server 2008. And also doesn't tell me which edition. The
>> ProductID:
>>
>> $ProductID=(get-item 'HKLM:/Software/Microsoft/Windows
>> NT/CurrentVersion').getvalue('ProductID')
>>
>> could probably do it, but I'm not at all sure what I'm looking at
>> there, and how to parse it for what's important. First, does anyone
>> know a reference that gives the relevant numbers for the various
>> editions of Windows. And second, could someone suggest a regex to
>> parse it into consituent parts? Or, alternately, does someone have a
>> better location to get the version and edition of Windows?
>>
>> Thanks,
>>
>
>
My System SpecsSystem Spec
Old 03-17-2008   #7 (permalink)
Andy Schneider
Guest


 

Re: Reliable way to get Windows Version?

Sorry.. thats what I get for trying to answer questions before I finish my
coffee in the morning

Andy


"Charlie Russel - MVP" <charlie@xxxxxx> wrote in message
news:FD2A2D4F-5746-4237-9E9B-B177780C81C8@xxxxxx
Quote:

> No help - returns the same for any version of Vista with SP1 as it does
> for Server 2008 RTM. But a good way to get the build number, certainly.
>
> --
> Charlie.
> http://msmvps.com/xperts64
> http://mvp.support.microsoft.com/profile/charlie.russel
>
>
> "Andy Schneider" <andy@xxxxxx-powershell.com> wrote in message
> news:9265C697-5DE4-4C8E-BAD3-B8023214FA79@xxxxxx
Quote:

>> get-wmiobject win32_operatingsystem
>>
>> This will give you BuildNumber and Version
>>
>> Andy
>> http://get-powershell.com
>>
>>
>>
>>
>> "Charlie Russel - MVP" <charlie@xxxxxx> wrote in message
>> news:6116302E-00CF-46C6-A17B-4F35EA5575C9@xxxxxx
Quote:

>>>I need a way to determine what Windows version and edition a script is
>>>running on. I can get the build number, that's trivial:
>>>
>>> $Build=(get-item 'HKLM:/Software/Microsoft/Windows
>>> NT/CurrentVersion').getvalue('CurrentBuildNumber')
>>>
>>> But it doesn't much help when Windows Vista SP1 is 6001 and so is
>>> Windows Server 2008. And also doesn't tell me which edition. The
>>> ProductID:
>>>
>>> $ProductID=(get-item 'HKLM:/Software/Microsoft/Windows
>>> NT/CurrentVersion').getvalue('ProductID')
>>>
>>> could probably do it, but I'm not at all sure what I'm looking at there,
>>> and how to parse it for what's important. First, does anyone know a
>>> reference that gives the relevant numbers for the various editions of
>>> Windows. And second, could someone suggest a regex to parse it into
>>> consituent parts? Or, alternately, does someone have a better location
>>> to get the version and edition of Windows?
>>>
>>> Thanks,
>>>
>>> --
>>> Charlie.
>>> http://msmvps.com/xperts64
>>> http://mvp.support.microsoft.com/profile/charlie.russel
>>>
>>>
>>
>
My System SpecsSystem Spec
Old 03-17-2008   #8 (permalink)
Charlie Russel - MVP
Guest


 

Re: Reliable way to get Windows Version?

Yes, that will do nearly all I need, on a Vista / Server 2008 system (though
doesn't tell me VL v. Retail, but I can live without that). However, it
doesn't cut it on Server 2003 / Windows XP x64 (where Edition isn't
available) and doesn't tell me if I'm on SBS or Server, much less which
version of Server. There I've used -matches "76588-" on the Product ID to
tell me it's Windows XP x64, since there is only a single version of it. But
that's fairly ugly, and doesn't lend itself to doing math on it or building
a simple (<g>) switch statement.

I fear we may be back to parsing ProductID to get everything...

--
Charlie.
http://msmvps.com/xperts64
http://mvp.support.microsoft.com/profile/charlie.russel


"Jon" <Email_Address@xxxxxx> wrote in message
news:%239YXVaAiIHA.4744@xxxxxx
Quote:

> "Charlie Russel - MVP" <charlie@xxxxxx> wrote in message
> news:6116302E-00CF-46C6-A17B-4F35EA5575C9@xxxxxx
Quote:

>>I need a way to determine what Windows version and edition a script is
>>running on. I can get the build number, that's trivial:
>>
>> $Build=(get-item 'HKLM:/Software/Microsoft/Windows
>> NT/CurrentVersion').getvalue('CurrentBuildNumber')
>>
>> But it doesn't much help when Windows Vista SP1 is 6001 and so is Windows
>> Server 2008. And also doesn't tell me which edition. The ProductID:
>>
>> $ProductID=(get-item 'HKLM:/Software/Microsoft/Windows
>> NT/CurrentVersion').getvalue('ProductID')
>>
>> could probably do it, but I'm not at all sure what I'm looking at there,
>> and how to parse it for what's important. First, does anyone know a
>> reference that gives the relevant numbers for the various editions of
>> Windows. And second, could someone suggest a regex to parse it into
>> consituent parts? Or, alternately, does someone have a better location to
>> get the version and edition of Windows?
>>
>
>
>
> There are a number of ways you could get relevant information. Parsing the
> product id sounds a bit of an extreme approach imho ;-) [although
> possible and worth a thread in itself]
>
> From the registry as you mentioned under
>
> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
>
> (Get-Item "HKLM:SOFTWARE\Microsoft\Windows
> NT\CurrentVersion").GetValue("ProductName")
> (Get-Item "HKLM:SOFTWARE\Microsoft\Windows
> NT\CurrentVersion").GetValue("EditionID")
>
> would distinguish between Windows Server 2008 and Vista
>
> Other options ..
> (Get-Item "HKLM:SOFTWARE\Microsoft\Windows
> NT\CurrentVersion").GetValueNames()
>
>
>
> or you could use Win32_OperatingSystem
>
> Get-WmiObject Win32_OperatingSystem | fl -property *
>
> eg
>
> (Get-WmiObject Win32_OperatingSystem).Caption
> (Get-WmiObject Win32_OperatingSystem).BuildNumber
>
> OR
>
> [environment]:sversion
>
> eg
>
> [environment]:sversion.Version.ToString()
>
> and split further....
>
>
> [environment]:sversion.Version.Major
> [environment]:sversion.Version.Minor
> [environment]:sversion.Version.Build
> [environment]:sversion.Version.Revision
>
>
> A combination of the above should provide you with sufficient information.
>
>
>
> --
> Jon
>
>
>
My System SpecsSystem Spec
Old 03-17-2008   #9 (permalink)
Andy Schneider
Guest


 

Re: Reliable way to get Windows Version?

How about gwmi win32_operatingsystem | select Name

- From 2008 RTM
PS C:\Users\superandys> gwmi win32_operatingSystem | select name

name
----
Microsoft® Windows Server® 2008 Enterprise
|C:\Windows|\Device\Harddisk0\Partition2



From Vista Ultimate
PS C:\Users\superandys>


PS 2 > gwmi win32_operatingSystem | Select Name

Name
----
Microsoft® Windows VistaT Ultimate |C:\Windows|\Device\Harddisk0\Partition1


PS 3 >




"Charlie Russel - MVP" <charlie@xxxxxx> wrote in message
news:FD2A2D4F-5746-4237-9E9B-B177780C81C8@xxxxxx
Quote:

> No help - returns the same for any version of Vista with SP1 as it does
> for Server 2008 RTM. But a good way to get the build number, certainly.
>
> --
> Charlie.
> http://msmvps.com/xperts64
> http://mvp.support.microsoft.com/profile/charlie.russel
>
>
> "Andy Schneider" <andy@xxxxxx-powershell.com> wrote in message
> news:9265C697-5DE4-4C8E-BAD3-B8023214FA79@xxxxxx
Quote:

>> get-wmiobject win32_operatingsystem
>>
>> This will give you BuildNumber and Version
>>
>> Andy
>> http://get-powershell.com
>>
>>
>>
>>
>> "Charlie Russel - MVP" <charlie@xxxxxx> wrote in message
>> news:6116302E-00CF-46C6-A17B-4F35EA5575C9@xxxxxx
Quote:

>>>I need a way to determine what Windows version and edition a script is
>>>running on. I can get the build number, that's trivial:
>>>
>>> $Build=(get-item 'HKLM:/Software/Microsoft/Windows
>>> NT/CurrentVersion').getvalue('CurrentBuildNumber')
>>>
>>> But it doesn't much help when Windows Vista SP1 is 6001 and so is
>>> Windows Server 2008. And also doesn't tell me which edition. The
>>> ProductID:
>>>
>>> $ProductID=(get-item 'HKLM:/Software/Microsoft/Windows
>>> NT/CurrentVersion').getvalue('ProductID')
>>>
>>> could probably do it, but I'm not at all sure what I'm looking at there,
>>> and how to parse it for what's important. First, does anyone know a
>>> reference that gives the relevant numbers for the various editions of
>>> Windows. And second, could someone suggest a regex to parse it into
>>> consituent parts? Or, alternately, does someone have a better location
>>> to get the version and edition of Windows?
>>>
>>> Thanks,
>>>
>>> --
>>> Charlie.
>>> http://msmvps.com/xperts64
>>> http://mvp.support.microsoft.com/profile/charlie.russel
>>>
>>>
>>
>
My System SpecsSystem Spec
Old 03-17-2008   #10 (permalink)
Charlie Russel - MVP
Guest


 

Re: Reliable way to get Windows Version?

no, that's OK - it gave me another way to look at it, that's always useful.

--
Charlie.
http://msmvps.com/xperts64
http://mvp.support.microsoft.com/profile/charlie.russel


"Andy Schneider" <andy@xxxxxx-powershell.com> wrote in message
news:ECF7AE5A-C0C4-4CBA-AC1F-FF9318B96557@xxxxxx
Quote:

> Sorry.. thats what I get for trying to answer questions before I finish my
> coffee in the morning
>
> Andy
>
>
> "Charlie Russel - MVP" <charlie@xxxxxx> wrote in message
> news:FD2A2D4F-5746-4237-9E9B-B177780C81C8@xxxxxx
Quote:

>> No help - returns the same for any version of Vista with SP1 as it does
>> for Server 2008 RTM. But a good way to get the build number, certainly.
>>
>> --
>> Charlie.
>> http://msmvps.com/xperts64
>> http://mvp.support.microsoft.com/profile/charlie.russel
>>
>>
>> "Andy Schneider" <andy@xxxxxx-powershell.com> wrote in message
>> news:9265C697-5DE4-4C8E-BAD3-B8023214FA79@xxxxxx
Quote:

>>> get-wmiobject win32_operatingsystem
>>>
>>> This will give you BuildNumber and Version
>>>
>>> Andy
>>> http://get-powershell.com
>>>
>>>
>>>
>>>
>>> "Charlie Russel - MVP" <charlie@xxxxxx> wrote in
>>> message news:6116302E-00CF-46C6-A17B-4F35EA5575C9@xxxxxx
>>>>I need a way to determine what Windows version and edition a script is
>>>>running on. I can get the build number, that's trivial:
>>>>
>>>> $Build=(get-item 'HKLM:/Software/Microsoft/Windows
>>>> NT/CurrentVersion').getvalue('CurrentBuildNumber')
>>>>
>>>> But it doesn't much help when Windows Vista SP1 is 6001 and so is
>>>> Windows Server 2008. And also doesn't tell me which edition. The
>>>> ProductID:
>>>>
>>>> $ProductID=(get-item 'HKLM:/Software/Microsoft/Windows
>>>> NT/CurrentVersion').getvalue('ProductID')
>>>>
>>>> could probably do it, but I'm not at all sure what I'm looking at
>>>> there, and how to parse it for what's important. First, does anyone
>>>> know a reference that gives the relevant numbers for the various
>>>> editions of Windows. And second, could someone suggest a regex to parse
>>>> it into consituent parts? Or, alternately, does someone have a better
>>>> location to get the version and edition of Windows?
>>>>
>>>> Thanks,
>>>>
>>>> --
>>>> Charlie.
>>>> http://msmvps.com/xperts64
>>>> http://mvp.support.microsoft.com/profile/charlie.russel
>>>>
>>>>
>>>
>>
>
My System SpecsSystem Spec
Closed Thread

Threa