Windows 10 - PowerShell 注册表驱动器无法正常工作

Windows 10 - PowerShell 注册表驱动器无法正常工作

我正在使用 Windows 10 20H2,在 PowerShell Desktop 5.1.19041.610 和 PowerShell Core 7.1.1 上,我已多次成功重现此问题且没有失败。

问题:Test-Path 仅适用于两个 PowerShell 注册表驱动器(缩短的注册表配置单元名称):

HKCU:HKLM:

它们分别是HKEY_CURRENT_USER和的缩写HKEY_LOCAL_MACHINE

在 PowerShell 中,它们的全名是:

Registry::HKEY_CURRENT_USERRegistry::HKEY_LOCAL_MACHINE分别。

但是有五个注册表配置单元,另外三个是:

HKEY_CLASSES_ROOTHKEY_CURRENT_CONFIGHKEY_USERS

他们的简称:

HKCR:HKCC:HKU:

Test-Path找不到驱动器,但Test-Path如果提供全名就可以找到它们:

TEST-PATH HKCR:
TEST-PATH HKCU:
TEST-PATH HKLM:
TEST-PATH HKU:
TEST-PATH HKCC:
TEST-PATH REGISTRY::HKEY_CLASSES_ROOT
TEST-PATH REGISTRY::HKEY_CURRENT_CONFIG
TEST-PATH REGISTRY::HKEY_USERS
$PSVersionTable

在此处输入图片描述

在此处输入图片描述

我很好奇并且想知道它为什么会表现得如此。

有人可以解释一下吗?

我已确认其他三个驱动器也不能与其他 cmdlet 一起使用,我该如何使用这三个注册表驱动器?

答案1

它们不是默认创建的,但您可以创建它们:

PS C:\>New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
HKCR                                   Registry      HKEY_CLASSES_ROOT

PS C:\>Test-Path HKCR:
True
PS C:>

答案2

是的,根据 Microsoft Docs,PowerShell 注册表提供程序默认仅提供两个 PSDrive:

HKCU:HKLM:

它们可以像文件系统一样被遍历。

要获取所有注册表 PSDrive:

Get-PSDrive -PSProvider Registry | Select-Object Name, Provider, Root

它将返回如下内容:

PS C:\Windows\System32> Get-PSDrive -PSProvider Registry | Select-Object Name, Provider, Root

Name Provider                           Root
---- --------                           ----
HKCU Microsoft.PowerShell.Core\Registry HKEY_CURRENT_USER
HKLM Microsoft.PowerShell.Core\Registry HKEY_LOCAL_MACHINE
New-PSDrive -PSProvider Registry -Root HKEY_CLASSES_ROOT -Name HKCR
New-PSDrive -PSProvider Registry -Root HKEY_CURRENT_CONFIG -Name HKCC
New-PSDrive -PSProvider Registry -Root HKEY_USERS -Name HKU

这些将为PSDrives其他三个蜂巢创建:

PS C:\Windows\System32> Get-PSDrive -PSProvider Registry | Select-Object Name, Provider, Root

Name Provider                           Root
---- --------                           ----
HKCC Microsoft.PowerShell.Core\Registry HKEY_CURRENT_CONFIG
HKCR Microsoft.PowerShell.Core\Registry HKEY_CLASSES_ROOT
HKCU Microsoft.PowerShell.Core\Registry HKEY_CURRENT_USER
HKLM Microsoft.PowerShell.Core\Registry HKEY_LOCAL_MACHINE
HKU  Microsoft.PowerShell.Core\Registry HKEY_USERS

Test-Path

PS C:\Windows\System32> Test-Path HKCC:
True
PS C:\Windows\System32> Test-Path HKCR:
True
PS C:\Windows\System32> Test-Path HKCU:
True
PS C:\Windows\System32> Test-Path HKLM:
True
PS C:\Windows\System32> Test-Path HKU:
True
PS C:\Windows\System32>

相关内容