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

如何让PowerShell的Get-Item返回格式兼容的注册表路径?

解决PowerShell注册表路径不兼容问题

原命令始终返回$false:

Get-Item -Path "HKCU:\Software\*" | Test-Path "$($_.Name)\Test"

问题原因

Get-Item返回的注册表项Name属性是传统注册表路径格式(比如执行(Get-Item -Path "HKCU:\Software\Adobe").Name会得到HKEY_CURRENT_USER\Software\Adobe),而Test-Path等PowerShell cmdlet只识别PSDrive格式的注册表路径(比如HKCU:\Software\Adobe),所以即便目标路径实际存在,Test-Path也会返回$false。

解决方法

有两种简单有效的方式获取PowerShell兼容的注册表路径:

  • 方式一:使用PSPath属性
    注册表项对象自带的PSPath属性包含完整的PSDrive格式路径,直接使用即可:

    Get-Item -Path "HKCU:\Software\*" | Test-Path "$($_.PSPath)\Test"
    

    如果需要纯路径(去掉PSPath自带的Microsoft.PowerShell.Core\Registry::前缀),可以做个简单替换:

    Get-Item -Path "HKCU:\Software\*" | ForEach-Object {
      $compatiblePath = $_.PSPath -replace 'Microsoft.PowerShell.Core\\Registry::',''
      Test-Path "$compatiblePath\Test"
    }
    
  • 方式二:手动替换路径前缀
    将传统根键名称替换为对应的PSDrive别名,比如HKEY_CURRENT_USER替换为HKCU:,HKEY_LOCAL_MACHINE替换为HKLM::

    Get-Item -Path "HKCU:\Software\*" | Test-Path "$($_.Name -replace '^HKEY_CURRENT_USER','HKCU:')\Test"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:53:16