PowerShell的 - 启动过程和CMDLINE开关
-
19-08-2019 - |
题
我可以运行此罚款:
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
start-process $msbuild -wait
但是,当运行此代码(下面)我得到一个错误:
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /v:q /nologo"
start-process $msbuild -wait
是否有一种方法可以使用的启动过程参数传递给MSBuild的?我接受不使用启动过程中,我使用它的唯一原因我需要具有“命令”作为一个变量。
当我已经点击 C:\ WINDOWS \ Microsoft.NET \框架\ v3.5版本\ MSBuild.exe / V:Q / NOLOGO结果 通过自身的线,那如何获得在PowerShell中处理?
我应该使用某种的eval()种功能,而不是?
解决方案
你会想你的论点分解为单独的参数
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
$arguments = "/v:q /nologo"
start-process $msbuild $arguments
其他提示
使用显式的参数,这将是:
$msbuild = 'C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe'
start-Process -FilePath $msbuild -ArgumentList '/v:q','/nologo'
编辑:报价
警告
如果您通过PowerShell的创建cmd.exe的窗口中运行PowerShell中,第二个实例不再等待作业完成。
cmd> PowerShell
PS> Start-Process cmd.exe -Wait
现在在新的cmd窗口,再次和运行PowerShell中它开始第二cmd窗口: CMD2> PowerShell的
PS> Start-Process cmd.exe -Wait
PS>
PowerShell中的第二个实例不再荣誉的-Wait请求和所有后台进程/作业返回“已完成”的状态,即使你他们仍然在运行!
我发现这个当我的C#Explorer程序用于打开一个窗口的cmd.exe和PS从该窗口运行时,它也将忽略-Wait请求。 看来,任何的PowerShell是cmd.exe的一个“的win32工作”不履行等待请求。
我的窗口上遇到了这个使用PowerShell版本3.0 7/64
我发现使用CMD工程以及作为替代,尤其是当你需要管从调用的应用程序(espeically当它没有内置的日志,不同的MSBuild)输出
cmd /C "$msbuild $args" >> $outputfile
除非OP使用PowerShell的社区扩展这确实与一群人的沿提供一个开始处理小命令。如果这样的话,那么Glennular的解决方案工作一种享受,因为它pscx \启动过程的位置参数相匹配:-path(位置1)-arguments(当前位置2)