如何仅获取注册表键名而不是完整的注册表键路径?

5
我正在尝试从注册表键获取所有子注册表键。
$Key="hklm:\SOFTWARE\Wow6432Node\MyCompany\MyProj"
$ComponentKeys=Get-ChildItem -path $Key 
$ComponentName=$Components | Select-object Name
$ComponentName

它会像下面这样显示结果。
Name
----
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MyCompany\MyProj\Service
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MyCompany\MyProj\UserInterface
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MyCompany\MyProj\DataSetView
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MyCompany\MyProj\Notification
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MyCompany\MyProj\Model
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MyCompany\MyProj\Management

但我只想获取子密钥名称而不是完整名称。

我需要如下结果

Name
----
Service
UserInterface
DataSetView
Notification
Model
Management

如何仅获取键名?

FYI,那不是键。那是一个值名称。您需要该值的名称。该键是HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MyCompany\MyProj\,该值为service,该值保存的信息称为data - NapkinBob
2个回答

9
您可以使用Name开关仅获取名称:
$Key="hklm:\SOFTWARE\Wow6432Node\MyCompany\MyProj"
Get-ChildItem $key -Name

如果您已经将路径存储在变量中,可以使用Split-Path cmdlet进行分割:
$componentName | Split-Path -Leaf

我的命令没有使用大括号,我到底哪里错了? - Shay Levy
1
当使用该命令时,它会将键名显示为"MyProj}"。我不知道为什么它会添加大括号"{hklm:\SOFTWARE\Wow6432Node\MyCompany\MyProj}"。 - Samselvaprabu

4
像这样吗?
 $ComponentName=$Components | select pschildname

无法从$ComponentName获取它吗? - Samselvaprabu
1
有点丑陋:$componentName | % { $_.name.split('\') | select -last 1 } - CB.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接