2011-04-11 95 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