您能区分Windows 7和Windows Server 2008 R2吗?

时间:2017-02-02 23:20:18

标签: powershell powershell-v2.0

我所使用的用例:我的目标是通过自动化将PowerShell 5静默部署到工作站的能力,我需要能够防止我的部署命中服务器以便我不要让世界自发崩溃。

我目前正在使用以下代码来获取power shell版本

$BuildVersion = [System.Environment]::OSVersion.Version
Write-Host($BuildVersion)

并使用

if ($BuildVersion.Major -le '6')

要排除任何未运行至少7的计算机,但我发现我将遇到问题,因为Windows 7和Windows Server 2008 R2都具有相同的主要内部版本号。

我的第一个想法是将代码更改为仅允许特定的内部版本号

但是一些谷歌搜索让我发现7和2008 R2共享相同的内部版本号6.1.7601。

我想知道的是,PowerShell 2.0中是否有一些替代方法可以识别符合我需求的Windows版本。

我已经看过堆栈溢出,找不到任何直接解决我问题的东西。

1 个答案:

答案 0 :(得分:3)

查询Win32_OperatingSystem class。其中一个属性是def age_in_months(date_of_birth) date_of_birth ? ((Time.zone.today - date_of_birth) / 30.437).to_i : 0 end 值。 ProductType表示客户端(即Windows 7),1表示域控制器,2表示服务器(均为Windows Server 2008 R2)。

对于版本,3类型通常具有可比性,因此您无需同时检查[System.Version]Major版本(Minor将同时包含Vista和7)

$BuildVersion.Major -eq 6