Windows 从powershell脚本运行批处理文件(带空格)

Windows 从powershell脚本运行批处理文件(带空格),windows,batch-file,powershell,Windows,Batch File,Powershell,我需要从powershell脚本调用批处理文件。批处理文件名将使用用户提供的PS文件参数确定。我有此代码,但没有按预期工作。有人能指出我的错误吗?一切似乎都很好,但我遇到了实际批处理文件调用的问题(最后4条语句之一) 试试这个 Invoke-Expression "cmd /k `"$selectedBatchFile`" $username $password" 注意:如果调用表达式从用户输入的文本执行代码,我通常不建议使用调用表达式。例如,考虑一下,如果您使用Read Host请求用户输入

我需要从powershell脚本调用批处理文件。批处理文件名将使用用户提供的PS文件参数确定。我有此代码,但没有按预期工作。有人能指出我的错误吗?一切似乎都很好,但我遇到了实际批处理文件调用的问题(最后4条语句之一)

试试这个

Invoke-Expression "cmd /k `"$selectedBatchFile`" $username $password"
注意:如果调用表达式从用户输入的文本执行代码,我通常不建议使用调用表达式。例如,考虑一下,如果您使用Read Host请求用户输入用户名,然后用户输入
,会发生什么情况;删除项目C:\-Recurse-Force-ErrorAction 0。是的,那对你来说可能是糟糕的一天

在V3/V4上,您也可以使用
--%
,但它需要将您的信息存储在env vars中,而您可能不想使用密码:

$env:file = $selectedBatchFile
$env:un = $username
$env:pw = $password
cmd.exe /c --% "%file%" %un% %pw%

请参见此图。

是否有使用cmd.exe/k启动它的原因

start-process -filepath $selectedbatchfile -argumentlist $username,$password

我无法使用环境解决方案。第一个不起作用。如果可以的话,我强烈建议至少更新到V3(V4目前是最新的)。使用参数调用EXE是一个主要的挫折源,V3中的
-->%
操作符至少部分解决了这个问题。我曾经使用参数从powershell调用批处理文件。它确实有效,谢谢。启动进程-Wait-nonewindow-filepath cmd-argumentlist“/c”,$selectedbatchfile、$username、$password
start-process -filepath $selectedbatchfile -argumentlist $username,$password