rob*_*rob 3 powershell escaping character unc select-string
我正在尝试在目录c:\bats\中搜索包含unc路径的批处理文件\\server\public
命令:
Get-ChildItem -path c:\bats\ -recurse | Select-string -pattern "\\server\public"
Run Code Online (Sandbox Code Playgroud)
我收到与字符串相关的错误\\server\public:
Select-string : The string \\server\public is not a valid regular
expression: parsing "\\server\public" - Malformed \p{X} character
escape. At line:1 char:91
+ ... ts" -recurse | Select-string -pattern \\server\public
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Select-String], ArgumentException
+ FullyQualifiedErrorId : InvalidRegex,Microsoft.PowerShell.Commands.SelectStringCommand
Run Code Online (Sandbox Code Playgroud)
我一直在使用各种转义如试图"\server\public"或"'\server\public'"但我总是收到同样的错误.
由于解决方案在@campbell.rw 的答案中,因此要进一步扩展该问题。该Select-String参数-Pattern支持正则表达式。反斜杠是控制字符,需要转义。不是你需要从 PowerShell 中转义它,而是正则表达式引擎本身。转义字符也是反斜杠
Select-string -pattern '\\\\server\\public'
Run Code Online (Sandbox Code Playgroud)
您可以使用正则表达式类中的静态方法来为您完成这项艰巨的工作。
Select-string -pattern ([regex]::Escape('\\server\public'))
Run Code Online (Sandbox Code Playgroud)
同样,在您的情况下,使用-SimpleMatch是更好的解决方案。
尝试使用搜索字符串周围的单引号并指定SimpleMatch.
Get-ChildItem -path c:\bats\ -recurse | Select-string -pattern '\\server\public' -SimpleMatch
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9653 次 |
| 最近记录: |