首页 > 解决方案 > 如何测试具有特定值的注册表项是否存在而不给出错误消息

问题描述

我有一种情况,我们需要检查具有特定值的注册表项,如果找不到,请与值一起创建键。我尝试了下面的代码片段,但是当我尝试运行它时,我收到错误消息“不能当注册表文件不存在时,找到注册表测试路径,因为它不存在”。

$Camera = (Get-ItemProperty "Registry::HKLM:\Software\Policies\Microsoft\Hello" -Name "Getin")."Getin"

if((Get-ItemProperty "Registry::HKLM:\Software\Policies\Microsoft\Hello" -Name "Getin")."Getin" -eq 0){
    Write-Output "Registry hive exists"
} else {
    Write-Output "Registry hive doesn't exists"
    New-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Hello" -Name "Getin" -Value "0" -PropertyType "DWORD" -Force | Out-Null
}

如何在不收到错误消息的情况下克服这种情况。
由于有多个注册表签入问题的任何解决方案?

标签: powershell

解决方案


在这种情况下,您可以使用-ErrorAction 类似这样的参数:

if( -not [String]::IsNullOrEmpty((Get-ItemProperty "HKLM:\Software\Policies\Microsoft\Hello" -Name "Getin" -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Getin))){
Write-Output "Registry hive exists"
} else {
    Write-Output "Registry hive doesn't exists"
    New-ItemProperty -Path "HKLM:\Software\Policies\Microsoft\Hello" -Name "Getin" -Value "0" -PropertyType "DWORD" -Force | Out-Null
}

推荐阅读