Менеджер конфигурации - PullRequest
       4

Менеджер конфигурации

2 голосов
/ 12 апреля 2011

Я новичок в powershell, так что не удивляйтесь :) Мой вопрос таков: мне нужно настроить два типа машин x86 и x64.Во время этой настройки я должен проверить версию .NET Framework, установленную на компьютере.Я делаю это, вызывая Test-Path: Test-Key "HKLM: \ Software \ Wow6432Node \ Microsoft \ NET Framework Setup \ NDP \ v1.1.4322" "Установить", что я хотел бы сделать так: # Проверить, еслисистема является архитектурой x64 # в случае положительного ответа измените реестр # на 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 голосов
/ 12 апреля 2011

Я часто заканчиваю тем, что ставлю "" вокруг путей просто для уверенности, пытаясь добавить их к вызовам Test-Path и Get-ItemProperty в функции выше:

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

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

Вы можете получить архитектуру машины с помощью команды

(Get-WmiObject Win32_OperatingSystem).OSArchitecture

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...