如果文件名包含空格,则嵌入式PowerShell命令将不起作用

问题描述

我知道这是一个奇怪的用例,但我需要在新流程中像这样执行,并且要一行一行。我花了很长时间才到达这个地方。为此,我已经把头发扯了好几个小时了……请帮助!

此命令在powershell和cmd中有效:

powershell -command "(start-process -Passthru PowerShell -ArgumentList '-file C:\Temp\Test.ps1').Id"

此命令在Powershell中有效,但在cmd中无效(找不到文件):

powershell -command "(start-process -Passthru PowerShell -ArgumentList '-file `"C:\Temp\Test.ps1`"').Id"

当我在文件名中添加空格时,在PowerShell或cmd中找不到文件(该文件确实存在):

powershell -command "(start-process -Passthru PowerShell -ArgumentList '-file `"C:\Temp\Test 1.ps1`"').Id"

解决方法

您可以从命令提示符直接运行它:

start "" powershell -file "C:\Temp\test.ps1"

这将在新窗口中启动该过程。