Powershell正在使用空格打开文件路径
我是我的PS脚本我希望能够通过执行以下操作在另一个PS实例中运行另一个脚本: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、函数、可操作程序或脚本文
$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尝试发布一个新问题,对我来说似乎可以,但注释并不适合发布代码。。