Formula una domandaFormula una domanda
 

Con rispostaSet/Create Registry Values

  • martedì 30 giugno 2009 19.20AnthonyP100 Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     
    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.

Risposte

Tutte le risposte

  • mercoledì 1 luglio 2009 1.20Marco ShawMVP, ModeratoreMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     Con risposta
    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.
  • mercoledì 1 luglio 2009 2.27Mervyn ZhangMSFT, ModeratoreMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     
    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.
  • mercoledì 1 luglio 2009 13.17Marco ShawMVP, ModeratoreMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     
    Some of what Mervyn just suggested requires PowerShell v2 (about_functions_advanced, for example).
  • mercoledì 1 luglio 2009 16.25AnthonyP100 Medaglie utenteMedaglie utenteMedaglie utenteMedaglie utenteMedaglie utente
     
    Wow, I feel like a complete idiot.  Thanks you!