You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell用Get-ChildItem查询注册表时如何仅提取键名而非全路径

问题解答

控制台输出的特殊逻辑

PowerShell内置了针对不同对象类型的默认格式化规则,规则定义在系统自带的*.format.ps1xml配置文件中。对于Microsoft.Win32.RegistryKey类型的注册表项对象,默认表格视图的Name列没有直接映射对象原生的Name属性,而是映射了PowerShell为所有Provider项统一附加的PSChildName属性,这个属性存储的就是当前项的纯名称,没有父路径前缀,也就是你看到的GUID键名。
而注册表项原生的Name属性设计上就是返回完整的注册表路径,所以直接调用才会得到带路径的结果。

直接获取纯键名的方法

不需要借助Split-Path、正则等额外处理,直接访问注册表项对象的PSChildName属性即可得到和控制台输出一致的纯GUID键名,示例代码如下:

$displayName = 'Parallels Tools'
$key = 'Registry::HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall'
$targetRegItem = Get-ChildItem -Path:$key | Where-Object {$_.GetValue('DisplayName') -eq $displayName}
# 直接获取纯GUID键名
$pureGuidName = $targetRegItem.PSChildName

如果你需要同时拿到多个属性,可以用Select-Object显式指定别名映射,输出和控制台默认视图完全一致的结果:

Get-ChildItem -Path:$key | Where-Object {$_.GetValue('DisplayName') -eq $displayName} | Select-Object @{Name='Name';Expression={$_.PSChildName}}, Properties

内容的提问来源于stack exchange,提问作者Gordon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:42:04