Registry Key Exist True of False 输出
Registry Key Exist True of False Output
我有一个简单的强大 shell 脚本,我正在尝试 运行。该脚本基本上会检查 RegKey 和 return 输出为 0 或 1 的值是否存在。
我遇到的问题是我的测试结果不一致。前任。 Reg 键不存在并且脚本被执行正确的值为 returned,0。我手动将键添加到注册表并且 运行 脚本再次期望 Write-Output 为 1 但 0 是return正在编辑什么。现在,如果我将 if 语句中的参数从 $null 更改为类似 $false 的参数,那么正确的输出将被 returned,直到我返回并重复我的测试过程。我希望有人有时间看看我写的东西并指出正确的方向。
New-PSDrive -PSProvider registry -Root HKEY_CLASSES_ROOT -Name HKCR
Test-Path -Path 'HKCR:\Installer\UpgradeCodesDD538593C91FA40B60EB02250187C0*'
if($path -eq $null) {Write-Output 0}
else
{Write-output 1}
remove-psdrive -name HKCR
Test-Path
,与 PowerShell 中的所有 Test-*
cmdlet 一样,returns 一个 布尔值 值, 即 $true
或 $false
,因此您不应将其与 $null
进行比较;相反,只需在 条件 .
中按原样使用它
无需创建 PowerShell 驱动器即可访问 HKEY_CLASSES_ROOT
配置单元[1];您可以简单地 使用 registry::
PS 提供商前缀来访问本机注册表路径 .
因此:
if (Test-Path -Path registry::HKEY_CLASSES_ROOT\Installer\UpgradeCodesDD538593C91FA40B60EB02250187C0*) {
1 # same as: Write-Output 1
}
else {
0 # same as: Write-Output 0
}
相反,如果您想获取通配符表达式匹配的特定键,请使用Get-Item
:
$path = Get-Item -Path registry::HKEY_CLASSES_ROOT\Installer\UpgradeCodesDD538593C91FA40B60EB02250187C0*
if ($null -eq $path) { # Always place $null on the LHS
'not found'
}
else {
'found at least one'
}
[1] 请注意 HKEY_CLASSES_ROOT
实际上是两个不同注册表子树的 复合 视图:机器级
HKEY_LOCAL_MACHINE:\Software\Classes
和用户级别 HKEY_CURRENT_USER:\Software\Classes
。也就是说,您会在 HKEY_CLASSES_ROOT
中看到来自这些子树的键的 union;如果注册表 值 存在于 两个 位置,则 HKEY_CURRENT_USER
值优先。
我有一个简单的强大 shell 脚本,我正在尝试 运行。该脚本基本上会检查 RegKey 和 return 输出为 0 或 1 的值是否存在。
我遇到的问题是我的测试结果不一致。前任。 Reg 键不存在并且脚本被执行正确的值为 returned,0。我手动将键添加到注册表并且 运行 脚本再次期望 Write-Output 为 1 但 0 是return正在编辑什么。现在,如果我将 if 语句中的参数从 $null 更改为类似 $false 的参数,那么正确的输出将被 returned,直到我返回并重复我的测试过程。我希望有人有时间看看我写的东西并指出正确的方向。
New-PSDrive -PSProvider registry -Root HKEY_CLASSES_ROOT -Name HKCR
Test-Path -Path 'HKCR:\Installer\UpgradeCodesDD538593C91FA40B60EB02250187C0*'
if($path -eq $null) {Write-Output 0}
else
{Write-output 1}
remove-psdrive -name HKCR
Test-Path
,与 PowerShell 中的所有Test-*
cmdlet 一样,returns 一个 布尔值 值, 即$true
或$false
,因此您不应将其与$null
进行比较;相反,只需在 条件 . 中按原样使用它
无需创建 PowerShell 驱动器即可访问
HKEY_CLASSES_ROOT
配置单元[1];您可以简单地 使用registry::
PS 提供商前缀来访问本机注册表路径 .
因此:
if (Test-Path -Path registry::HKEY_CLASSES_ROOT\Installer\UpgradeCodesDD538593C91FA40B60EB02250187C0*) {
1 # same as: Write-Output 1
}
else {
0 # same as: Write-Output 0
}
相反,如果您想获取通配符表达式匹配的特定键,请使用Get-Item
:
$path = Get-Item -Path registry::HKEY_CLASSES_ROOT\Installer\UpgradeCodesDD538593C91FA40B60EB02250187C0*
if ($null -eq $path) { # Always place $null on the LHS
'not found'
}
else {
'found at least one'
}
[1] 请注意 HKEY_CLASSES_ROOT
实际上是两个不同注册表子树的 复合 视图:机器级
HKEY_LOCAL_MACHINE:\Software\Classes
和用户级别 HKEY_CURRENT_USER:\Software\Classes
。也就是说,您会在 HKEY_CLASSES_ROOT
中看到来自这些子树的键的 union;如果注册表 值 存在于 两个 位置,则 HKEY_CURRENT_USER
值优先。