从具有空间的路径执行的Powershell不产生输出

时间:2017-10-25 21:37:06

标签: powershell

在Powershell和Powershell ISE中,存在于路径中有空格的位置的Powershell脚本不会执行,或者至少它们的输出不会显示在命令窗口中。

我有一个Powershell脚本(helloworld.ps1),它只包含以下代码:

Write-Host "Hello World"

如果脚本是从:

执行的
"C:\Temp\helloworld.ps1"

输出为:Hello World

如果脚本是从:

执行的
"C:\Program Files\Microsoft Office\helloworld.ps1"

输出为空白。

请注意,执行时路径被引号括起来(否则,很明显,我会有错误)。我在多个环境中的多台计算机上复制了同样的问题,所以它似乎不是一个配置问题。

如果脚本本身是从包含空格的路径执行的,那么Powershell输出隐藏的原因是什么?

4 个答案:

答案 0 :(得分:2)

如果你这样做:

local itemTable = {

["category1"] = {
    {"Test1",1463,0.4,0,13},
    {"Test2",1578,0.5,0,4},
    {"Test3",2683,1,0,6},
},

["category2"] = {
    {"Test4",328,0.4,90,5},
    {"Test5",1463,0.4,0,5},
    {"Test6",346,1,90,1.5},
},}

这是一个引用的字符串,而PowerShell只会输出它。

如果您想执行带引号的字符串作为命令,则需要"C:\Temp\helloworld.ps1" (调用或调用)运算符:

&

否则你可以在没有引号的情况下编写它,PowerShell会理解它是一个命令:

& "C:\Temp\helloworld.ps1"

如果脚本的路径或文件名包含空格并且您想要运行它,则必须使用C:\Temp\helloworld.ps1 并引用路径和文件名。

答案 1 :(得分:0)

要执行文件,请在其路径前加上任何引号:

PS C:\> C:\Temp\helloworld.ps1

如果路径中包含空格,请使用反勾号(`)转义空格:

PS C:\> C:\Program` Files\Microsoft` Office\helloworld.ps1

答案 2 :(得分:0)

只要引号不是第一个字符,它将起作用。

C":\Program Files\Microsoft Office\helloworld.ps1"

Hello World

答案 3 :(得分:-2)

在路径

之前使用.
C:>. "C:\Program Files\Microsoft Office\helloworld.ps1"