2011-04-11 195 views
2

我是新來的PowerShell所以不要咬我:) 我的問題是這樣的: 我必須設置兩種類型的機器x86和x64。 在安裝過程中,我必須檢查機器上的.NET Framework安裝版本。 我正在通過調用測試路徑: 測試密鑰「HKLM:\ Software \ Wow6432Node \ Microsoft \ NET Framework Setup \ NDP \ v1.1.4322」「Install」 我想要做的是這樣的: #檢查系統是否支持x64架構 #在積極的answere的情況下更改註冊表 #至Wow6432Node 如果($ os_architecture -eq 「64」) {$ = dot_net_registry_root_path 「HKLM:\ SOFTWARE \ Wow6432Node」 }配置管理器

# Add common framework path 
$dot_net_registry_path = $dot_net_registry_root_path + "\NET Framework Setup\NDP\" 

# Check 1.0 version of .NET Framework 
$dot_net_1_0_registry_path = $dot_net_registry_root_path + "\Microsoft\.NETFramework\v1.0\SBSDisabled" 

if(!(Test-Key $dot_net_1_0_registry_path "Install")) 
{ 
    Write-Output ".NET Framework v1.0.3705 is NOT installed" 
} 
else 
{ 
    Write-Output ".NET Framework v1.0.3705 is installed" 
} 

# Check 1.1 version of .NET Framework 
$dot_net_1_1_registry_path = "'" + $dot_net_registry_path + "v1.1.4322" + "'" 

if (!(Test-Key $dot_net_1_1_registry_path "Install")) 
{ 
    Write-Output "Please install .NET Framework v1.1.4322" 
} 
else 
{ 
    Write-Output ".NET Framework v1.1.4322 is installed" 
} 

其中試驗主要

function Test-Key([string]$path, [string]$key) 
{ 
    if(!(Test-Path -LiteralPath $path)) { return $false } 

    if ((Get-ItemProperty $path).$key -eq $null) { return $false } 

    return $true 
} 

的問題是,當我使用的變量,而不是引用的字符串測試的路徑,因爲空間進路的失敗:「\ NET Framework安裝」

我應該做些什麼來解決這個問題?

+0

請問,你能給出更高的精度嗎?你給的代碼似乎對我有用。 – JPBlanc 2011-04-12 05:05:45

+0

我修改開始測試... – JPBlanc 2011-04-12 06:14:38

回答

0

我最後往往把「」周圍的路徑正好是肯定的,試圖將其添加到上面的功能Test-PathGet-ItemProperty電話:

if(!(Test-Path -LiteralPath "$path"))

if ((Get-ItemProperty "$path").$key

你可以得到機器的架構與命令

(Get-WmiObject Win32_OperatingSystem).OSArchitecture

+0

謝謝!它有幫助 – monkzen 2011-04-12 21:00:59