2012-11-16 14 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總是會是假的。你想檢查哪條路?文件系統路徑c:\ windows \ system32 \ test.dll或註冊表鍵路徑?如果它是註冊表鍵路徑,則知道它存在,因爲它對它執行了Get-ItemProperty。

+0

我想看看這個鍵存在HKLM:\ SOFTWARE \ 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