powershell - 如何测试具有特定值的注册表项是否存在而不给出错误消息
问题描述
我有一种情况,我们需要检查具有特定值的注册表项,如果找不到,请与值一起创建键。我尝试了下面的代码片段,但是当我尝试运行它时,我收到错误消息“不能当注册表文件不存在时,找到注册表测试路径,因为它不存在”。
$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
}
如何在不收到错误消息的情况下克服这种情况。
由于有多个注册表签入问题的任何解决方案?
解决方案
在这种情况下,您可以使用-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
}
推荐阅读
- php - 使用mysql将新记录插入另一个表中的最高值的表中?
- c# - 从文件中检索字符串,当多行包含完全相同的字符串时使用 Linq 进行过滤
- c# - c# ADO 为 SQL INSERT TRIGGER 设置 context_info
- python - jupyter notebook 同一行中的进度条更新
- string - 使用优先级队列高效实现 BPE
- python - 无法将反序列化数据发送到 Web API
- sql - SQL 表中的 XML - SQL Server
- haskell - 通过适当的获取和释放来流式传输资源
- gridview - Yii2 Gridview 列汇总基于计算的子值
- json - 如何在 spark 2.X 中验证 Json 模式?