从批处理文件运行的 powershell 脚本带有空格键的参数解析不正确

从批处理文件运行的 powershell 脚本带有空格键的参数解析不正确

我有一个运行 powershell 脚本的批处理文件,我需要向该脚本传递两个参数。在我的批处理中,它看起来像这样:

powershell -executionpolicy remotesigned -File "my script.ps1" "my path1\" "my path2\somefile.txt"

现在的情况是,我的 powershell 脚本的参数完全混乱了,我得到:

  • 我的路径1”我的
  • 路径2\somefile.txt

我尝试使用'`字符封装我的参数,几乎得到了我想要的结果,但第二个引号字符仍保留在 powershell 脚本中。我得到的是:

powershell -executionpolicy remotesigned -File "my script.ps1" "'my path1\'" "'my path2\somefile.txt'"
  • ‘我的路径 1\’
  • ‘我的路径2\somefile.txt’

我想要的是这个

  • 我的路径1\
  • 我的 path2\somefile.txt

我知道我可以删除 powershell 脚本中的冗余引号,但有没有更好的方法呢?换句话说,我怎样才能将这些参数传递给 powershell 以使它们保持正常?

测试powershell脚本:

echo $args[0]
echo $args[1]

答案1

我设法搞清楚了。问题出在第一个参数的尾部斜杠上。这个斜杠转义了我的引号,因此它不能用作引号(但不知为何,powershell 仍然在后面的某个空格处截断了字符串)。

我的批处理文件是自动生成的,但我设法通过在第一个参数末尾添加另一个斜杠(预计以斜杠结尾)来修复它。

powershell -executionpolicy remotesigned -File "my script.ps1" "my path1\\" "my path2\somefile.txt"

这个问题可能不仅仅局限于批处理文件,而且很可能还影响从命令行运行的 powershell 脚本。

相关内容