Powershell打开文件路径与空间

use*_*227 8 powershell start-process

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

$filepath = Resolve-Path "destruct.ps1"

start-process powershell.exe "$filepath"
Run Code Online (Sandbox Code Playgroud)

destruct.ps1与此脚本位于同一文件夹中

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

术语"C:\ My"未被识别为cmdlet,函数,可操作程序或脚本文件.验证该术语,然后重试.

我知道通过使用带有Invoke-Expression方法的'&'来解决这个问题,我怎么能这样做但是通过使用start-process方法?

非常感谢您的帮助!

CB.*_*CB. 12

试试这个:

 start-process -FilePath powershell.exe -ArgumentList "-file `"$filepath`""
Run Code Online (Sandbox Code Playgroud)

评论后编辑:

start-process -FilePath powershell.exe -ArgumentList "-file `"$($filepath.path)`""
Run Code Online (Sandbox Code Playgroud)

边注:

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


mjo*_*nor 9

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

 "`"$filepath`""
Run Code Online (Sandbox Code Playgroud)

  • 然后你得到双引号,但$ filepath不会扩展.如果你把它放在双引号内的单引号中它会扩展,但是命令行不喜欢单引号. (2认同)