Powershell正在使用空格打开文件路径

Powershell正在使用空格打开文件路径,powershell,start-process,Powershell,Start Process,我是我的PS脚本我希望能够通过执行以下操作在另一个PS实例中运行另一个脚本: $filepath = Resolve-Path "destruct.ps1" start-process powershell.exe "$filepath" destruct.ps1与此脚本位于同一文件夹中 但是,在包含空格的位置(“C:\My Scripts\”)运行此脚本时,我将遇到以下错误: 术语“C:\My”不能识别为cmdlet、函数、可操作程序或脚本文

我是我的PS脚本我希望能够通过执行以下操作在另一个PS实例中运行另一个脚本:

$filepath = Resolve-Path "destruct.ps1"
    
start-process powershell.exe "$filepath"
destruct.ps1
与此脚本位于同一文件夹中

但是,在包含空格的位置(
“C:\My Scripts\”
)运行此脚本时,我将遇到以下错误:

术语“C:\My”不能识别为cmdlet、函数、可操作程序或脚本文件。请验证术语,然后重试


我知道,通过在调用表达式方法中使用
&“
可以解决此问题,但如何使用start process方法来解决此问题?

您可以添加转义双引号,以便传递带引号的参数:

 "`"$filepath`""
试试这个:

 start-process -FilePath powershell.exe -ArgumentList "-file `"$filepath`""
评论后编辑:

start-process -FilePath powershell.exe -ArgumentList "-file `"$($filepath.path)`""
旁注:


$filepath
[pathinfo]
类型,而不是
[string]
类型

我在这里回答一个一般情况。

如果需要从Powerhsell导航到文件夹,例如
C:\Program Files
,以下命令将不起作用,因为路径之间有空格

cd C:\程序文件

而是使用双引号嵌入路径,如下所示


cd“C:\Program Files”

文件名可能包含空格,因此在完整路径中保留空格:
记事本++执行命令:
“C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe”“&\”$(完整\u当前\u路径)\”

来自命令提示符的相同命令:

“C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe”“和\“C:\a\u work\Systems\name,带空格.ps1\”

以防万一[string]$shipno(即路径和文件名)包含空格,以下允许它成功传递到-FilePath:

if ($shipno.contains(" ") -eq $true) {
   $shipno = """" + $shipno + """"
}

另一种选择是在“外部”使用单引号,这样双引号将被视为文本。然后您将获得双引号,但$filepath不会展开。如果你把它放在双引号内的单引号中,它会扩展,但是命令行不喜欢单引号。嘿,非常感谢你的帮助。不幸的是,这仍然不起作用?使用$filepath而不使用空格是有效的,使用空格则不会…@mjolinor um。。这样,
-file
参数用于启动进程cmdlet。这是另一个选项。无论哪种方式,您都必须在参数列表中双引号引用文件路径。还有一个问题!如何使用此方法将参数带到整个系统?我有$courseName要传递给$filePath脚本,该脚本有一个courseName参数。我尝试了以下方法,但不起作用:启动进程-FilePath powershell.exe-ArgumentList“-file
”$($FilePath.path)
“-courseName$courseName”@user3402227尝试发布一个新问题,对我来说似乎可以,但注释并不适合发布代码。。