配置管理器

时间:2011-04-11 23:51:25

标签: powershell

我是powershell的新手,所以不要咬我:) 我的问题是: 我必须设置两种类型的机器x86和x64。 在此设置期间,我必须检查计算机上的.NET Framework安装版本。 我是通过调用Test-Path来做到的: 测试密钥“HKLM:\ Software \ Wow6432Node \ Microsoft \ NET Framework Setup \ NDP \ v1.1.4322”“Install” 我想做的是:     #检查系统是否为x64架构     #如果积极回答改变注册表     #to Wow6432Node     if($ os_architecture -eq“x64”)     {         $ 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"
}

其中Test-Key

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
}

问题是,当我使用变量而不是引用的字符串Test-Path因路径中的空格而失败时:“\ .NET Framework Setup”

应该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我经常最后在路径周围放置“”,尝试将它们添加到上述函数中的Test-PathGet-ItemProperty调用中:

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

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

您可以使用命令

获取计算机的体系结构

(Get-WmiObject Win32_OperatingSystem).OSArchitecture