使用powershell的路径中的非法字符

illegal characters in path using powershell

我需要使用 powershell 验证一条路径。问题是当给出像 Test-Path -Path "\.2.200.13\share\Logger\Logger" 这样的路径时它工作正常,但我的要求是,这个路径将在记事本中可用 - 我们需要从记事本中读取路径然后验证它。这是代码:

$var = ( Get-Content D:\TestPathIssue\Params.txt ) -split '='
$source1=$var[1].Trim();
test-path -Path $source1;

我可以在 $source1 中找到路径,但我不明白为什么在 Test-Path 中这种方法失败了。

检查变量 $source1 是否返回引号中的路径,例如:- "\10.2.200.13\share\Logger\Logger" 而不是 \10.2.200.13\share\Logger\Logger

通过尝试修复 -

$source1=$source1 -replace '"', ""

以下 powershell 代码将使用正则表达式获取合法字符列表,并报告在文件名中发现的任何非法字符。根据需要修改合法字符列表。

$legal = "[a-zA-Z\d\.\-'_\s\(\)&,%\[\];\!$\+@~=#]"

ForEach ($File in Get-ChildItem -Path C:\mypath -Recurse){
  ForEach ($char in $File.Name.ToCharArray()){
    If ($char -notmatch $legal){
      $output = $char+" found in "+$file.fullname
      write-output $output
      break
    }  
  }
}