我可以运行此罚款:

$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)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top