IT 专业人士的资源 > 论坛主页 > Windows PowerShell > Set/Create Registry Values
提出问题提出问题
 

已答复Set/Create Registry Values

  • 2009年6月30日 19:20AnthonyP100 用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     
    I am trying to search registry values and either create a value if
    it's not there or set the cirrect value it should have via the
    following function:

    function Compare2([string]$TermtoMatch, [string]$RegType, [int]
    $RegValue, [string]$RegistryPath) {
            $value = Get-ItemProperty -path $RegistryPath
            if ($value -match $TermtoMatch) { Set-ItemProperty $RegistryPath -
    Name $TermtoMatch -value $RegValue }
            Else { New-ItemProperty $RegistryPath -Name $TermtoMatch -value
    $RegValue -propertyType RegType }

     

    }

    Here's a snippet of the code calling the function:

    $RegistryPath = "HKLM:\SOFTWARE\Intel\LANDesk
    \VirusProtect6\CurrentVersion\Storages\FileSystem\RealTimeScan"

    Compare2("ConfigRestart", "dword", 1, $RegistryPath)

    Here's the error:
    Get-ItemProperty : Cannot bind argument to parameter 'Path' because it
    is an empty string.
    At C:\script.ps1:2 char:33
    + $value = Get-ItemProperty -Path <<<< $RegistryPath
    The '-match' operator failed: parsing "ConfigRestart dword 1 "HKLM:
    \SOFTWARE\Intel\LANDesk\VirusProtect6\CurrentVersion\Storages
    \FileSystem\RealTimeScan" - Unrecognized escape sequence \I..
    At C:\script.ps1:3 char:19
    + if ($value -match <<<< $TermtoMatch) {

    Any ideas what I'm missing here?  I'm thinking it has something to do
    with my casting.  When I manually put the values in for the variables
    it seems to work just fine.

    Thanks.

答案

全部回复

  • 2009年7月1日 1:20Marco ShawMVP, 版主用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     已答复
    When you call your function, call it like this:
    PS>compare2 "configrestart" "dword" 1 $registrypath

    By putting commas, PowerShell is thinking this is all the first argument and passes it in as an array value.
  • 2009年7月1日 2:27Mervyn ZhangMSFT, 版主用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     
    Hi,

    Additional to Marco's answer, it’s suggested to run the following commands to get more detailed information and instruction about PowerShell Functions.

    Get-Help about_functions

    Get-Help about_functions_advanced

    Get-Help about_functions_advanced_methods

    Get-Help about_functions_cmdletbindingattribute

    Thanks.

    This posting is provided "AS IS" with no warranties, and confers no rights.
  • 2009年7月1日 13:17Marco ShawMVP, 版主用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     
    Some of what Mervyn just suggested requires PowerShell v2 (about_functions_advanced, for example).
  • 2009年7月1日 16:25AnthonyP100 用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌
     
    Wow, I feel like a complete idiot.  Thanks you!