2017-02-02 21 views
4

PowerShell 5をオートメーションを介して静かにPowerShell 5を静的にデプロイすることが私の目的です。私は、デプロイメントがサーバーに当たらないようにする必要があります。世界は自発的に自発的に崩壊する。Windows 7とWindows Server 2008 R2を区別できますか?

私は現在、電力シェルバージョン

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

とで、少なくとも7を実行しているが、私がいることを発見したではない任意のマシンを除外するために

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

を使用してをつかむために、次のコードを使用してい

Windows 7とWindows Server 2008 R2のメジャービルド番号が同じであるため、問題が発生します。

私が最初に考えたのは、特定のビルド番号に

を許可するようにコードを変更することでした。しかしグーグルのビットは7および2008 R2は、同じビルド番号6.1.7601を共有していることを見つけるために私を導きました。

PowerShell 2.0の中に、私のニーズを満たすWindowsビルドを識別する方法がいくつかあると思います。

私はスタックオーバーフローの周りを見て、直接私の問題を解決する何かを見つけることができません。

答えて

3

Win32_OperatingSystem classにお問い合わせください。その属性の1つはProductTypeの値です。 1はクライアント(Windows 7)、2はドメインコントローラ、3はサーバー(Windows Server 2008 R2の両方)を意味します。バージョンについては

あなたがMajorMinorバージョントリックを行う必要があります

# Define a minimum version (Win7 family pre-release build) 
$MinimumVersion = [version]'6.1' 

# Fetch ProductType from WMI 
$OSType = (Get-WmiObject -Class Win32_OperatingSystem -Property ProductType).ProductType 

if($OSType -eq 1 -and [Environment]::Version -ge $MinimumVersion){ 
    # client OS, 7 or newer 
} 
+0

$BuildVersion.Major -eq 6は、Vistaと7の両方が含まれる)の両方を検査する必要はありませんので、[System.Version]タイプは、ordinally匹敵します。どうもありがとうございました! –

関連する問題