2012-11-16 2 views
0

나는 reg 키가 존재하는지 확인한 다음 reg 키가있는 경우이를 증가 시키려고합니다. 나는 값을 직접 입력하면 레지스트리 값을 설정할 수 있다는 것을 확인했다. 즉, 값 3레지스트리 키 확인 후 Powershell에서 증가시키기

$path = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\SharedDLLs" 
$psv = Get-ItemProperty -path $path 
$value = $psv."c:\windows\system32\test.dll" 

if(!(Test-Path $value)) 
    { 
    Set-ItemProperty -path $path -name $key -Type DWORD -value $value++ 
    } 
Else 
    { 
    echo "error 1" 
    } 

답변

1
자신의 값을 관리자로

, 변경 $dllToCheck이 시도 :

나는이 키가 존재하는지 확인하려는
$regPath = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\SharedDLLs" 
$dllToCheck = "C:\Program Files (x86)\Hewlett-Packard\Shared\CaslVer.exe" 

$exist = get-itemproperty $regPath -name $dllToCheck -ErrorAction silentlycontinue 
if ($exist -ne $null) 
{ 
    $currentValue = $exist.$dllToCheck 
    $nextValue = $currentValue + 1 
    Set-ItemProperty $regPath -name $dllToCheck -Value $nextValue 
} 
+0

감사! 나는이 작품을 확인했다 ... – Soberone

1

$value에 두는 것은 너무 Test-Path $value는 항상 false가 될 것입니다 숫자입니다. 어떤 경로를 확인하고 싶습니까? 파일 시스템 경로 c : \ windows \ system32 \ test.dll 또는 레지스트리 키 경로? 레지스트리 키 경로 인 경우 Get-ItemProperty를 수행했기 때문에 존재한다는 것을 알고 있습니다.

+0

HKLM : \ : \ 소프트웨어 \ Wow6432Node 마이크로 소프트 \ WINDOWS \ CurrentVersion을 \ 수 SharedDLLs \ "C \ windows \ system32 \ test.dll "만약 존재한다면 그 값을 1 씩 증가시켜야합니다. 저는 이것에서 꽤 n00b입니다 ... 나는 배트로부터 잘못된 표현을 사용하고있는 것처럼 보입니다. @ Keith Hill – Soberone

+0

이것은 레지스트리 키가 아닙니다. 레지스트리 키는'HKLM : \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ SharedDLLs'입니다. 'c : \ windo ws \ system32 \ test.dll'은 해당 레지스트리 키 아래의 값입니다. reg 키 경로와 값에'Get-ItemProperty'를 사용하여 그 값의 존재 여부를 결정하십시오. null를 돌려주는 경우는 존재하지 않는다 –

+0

그 점을 지적 해 주셔서 감사합니다 ... 당신이 말하는 것은 의미가 있습니다. 내 스크립트를 수정하고 작동 확인! 뒤늦은 지경 ... ID10T 오류였습니다 ... 감사합니다! – Soberone