我只想在注冊表中為 DWORD32 值設定一個值,前提是它已經存在。
這是我的代碼:
Set-ItemProperty -Path $mypath -Name $myname -Value 0
這段代碼的問題在于 Set-ItemProperty 類;即使它不存在,它也會創建 DWORD32 值,并且我只想在它存在時更改它的值。
任何解決方案?
uj5u.com熱心網友回復:
檢查是否Get-ItemPropertyValue回傳任何成功輸出,同時忽略任何錯誤(在 PSv4- 中,使用Get-ItemProperty):
if ($null -ne (Get-ItemPropertyValue -ErrorAction Ignore -LiteralPath $mypath -Name $myname)) {
Set-ItemProperty -LiteralPath $mypath -Name $myname -Value 0
}
筆記:
以上只是測驗注冊表值是否存在 - 它不檢查其資料型別。對于后者,您可以使用(回傳的
Microsoft.Win32.RegistryKey.GetValueKind()值為 typeMicrosoft.Win32.RegistryValueKind):(Get-Item -LiteralPath $path).GetValueKind($myName) -eq 'Dword'注意,使用的
Test-Path是不是在這種情況下的選擇,因為它只能用于提供測驗專案(其映射到注冊表項),也沒有自己的特性(實際上對應的注冊表值)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/392521.html
