我在带有方括号的文件夹中有一个powershell脚本,例如:
当我尝试使用以下命令行从命令行运行脚本时
C:\Temp\[test]>Powershell.exe .\MyScript.ps1
我得到以下输出:
如果我将相同的脚本放在没有方括号的文件夹中并运行:
C:\Temp\(test)>Powershell.exe .\MyScript.ps1
它有效,我得到以下输出:
该脚本是自动化项目的一部分,必须位于带方括号的文件夹中。任何帮助将不胜感激。
答案 0 :(得分:1)
问题:将本地路径传递给powershell.exe,其中包含文件夹名称中的方括号,表示powershell无法找到传递给它的脚本文件。
选项1:使用powershell -File。\ MyScript.ps1
选项2:使用powershell%CD%\ MyScript.ps1
我不清楚为什么powershell找不到你的路径,但-File命令行参数似乎解决了它。与使用%CD%批处理文件属性而不是“。”一样。
如果我创建一个包含单行的文件“HelloWorld.ps1”:
Write-Output "Hello World"
在文件夹
中c:\work\joel\scream
并运行命令:
C:\work\joel\scream>powershell .\HelloWorld.ps1
然后我得到预期的输出(Hello World)。
如果我将文件夹重命名为[scream],则会失败。
cd ..
ren scream [scream]
方括号是范围运算符。
C:\work\joel\[scream]>powershell .\HelloWorld.ps1
现在收益:
。\ helloworld.ps1:术语'。\ helloworld.ps1'未被识别为名称 cmdlet,函数,脚本文件或可操作程序。检查拼写 名称,或者如果包含路径,请验证路径是否正确并尝试 试。
然而跑步:
C:\work\joel\[scream]>powershell -File .\HelloWorld.ps1
给出预期输出(Hello World)。
powershell /?
<snip/>
-File
Runs the specified script in the local scope ("dot-sourced"), so that the
functions and variables that the script creates are available in the
current session. Enter the script file path and any parameters.
File must be the last parameter in the command, because all characters
typed after the File parameter name are interpreted
as the script file path followed by the script parameters.
我不清楚powershell或命令提示符/批处理脚本是否误解了路径,但我可以这样说:
C:\work\joel\[scream]>powershell .\HelloWorld.ps1
不起作用:
C:\work\joel\[scream]>powershell %CD%\helloworld.ps1
确实有效。所以它似乎与'。'的扩张有关。进入当前的道路。