将带有星号的注册表项传递给Test-Path

jos*_*ley 6 powershell escaping

我想Test-Path在PowerShell中运行此注册表路径,但它包含一个星号,它在注册表中有效,但在Windows路径中无效.

问题是,当我通过它时,Test-Path将星号视为外卡,因此这需要非常长的时间,因为它检查所有子路径Classes并且不是我想要测试的任何东西.

有什么办法可以正确传递那个星号吗?一些逃生机制?

Write-Host "Begin"
Test-Path "HKLM:\SOFTWARE\Classes\*\shell\Some shell extension"
Write-Host "End"
Run Code Online (Sandbox Code Playgroud)

Ans*_*ers 7

使用该-LiteralPath参数可防止通配符/通配符匹配.

-LiteralPath <字符串[]>

指定要测试的路径.与Path不同,LiteralPath参数的值与键入的完全一样.没有字符被解释为通配符.如果路径包含转义字符,请将其用单引号括起来.单引号告诉Windows PowerShell不要将任何字符解释为转义序列.

Write-Host "Begin"
Test-Path -LiteralPath "HKLM:\SOFTWARE\Classes\*\shell\Some shell extension"
Write-Host "End"
Run Code Online (Sandbox Code Playgroud)