无法在带方括号的文件夹中运行powershell脚本

时间:2013-08-09 06:17:11

标签: powershell path ps1

我在带有方括号的文件夹中有一个powershell脚本,例如:

当我尝试使用以下命令行从命令行运行脚本时

C:\Temp\[test]>Powershell.exe .\MyScript.ps1

我得到以下输出:

enter image description here

如果我将相同的脚本放在没有方括号的文件夹中并运行:

C:\Temp\(test)>Powershell.exe .\MyScript.ps1

它有效,我得到以下输出:

enter image description here

该脚本是自动化项目的一部分,必须位于带方括号的文件夹中。任何帮助将不胜感激。

1 个答案:

答案 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 

确实有效。所以它似乎与'。'的扩张有关。进入当前的道路。