我有一个运行 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 脚本。