我所使用的用例:我的目标是通过自动化将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版本。
我已经看过堆栈溢出,找不到任何直接解决我问题的东西。
答案 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