我可以很好地运行以下代码:
$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有没有一种方法可以使用start-process将参数传递给MSBuild?我对不使用start-process持开放态度,我使用它的唯一原因是我需要将"command“作为变量。
当我有
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /v:q /nologo
在一行代码中,如何在Powershell中处理它?
我是否应该使用某种eval()类型的函数呢?
发布于 2009-03-16 17:07:29
您将需要将参数分隔为单独的参数
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
$arguments = "/v:q /nologo"
start-process $msbuild $arguments 发布于 2009-03-16 17:10:00
使用显式参数,它将是:
$msbuild = 'C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe'
start-Process -FilePath $msbuild -ArgumentList '/v:q','/nologo'编辑:报价。
发布于 2013-01-09 03:04:07
警告
如果您从PowerShell创建的cmd.exe窗口运行Powershell,则第二个实例不再等待作业完成。
cmd> PowerShell
PS> Start-Process cmd.exe -Wait 现在,在新的命令窗口中,再次运行PowerShell,并在其中启动第二个命令窗口: cmd2> PowerShell
PS> Start-Process cmd.exe -Wait
PS> PowerShell的第二个实例不再接受-Wait请求,所有后台进程/作业都返回“已完成”状态,即使它们仍在运行!
当我的C#资源管理器程序用来打开cmd.exe窗口并且PS从该窗口运行时,我发现了这一点,它也忽略了-Wait请求。作为cmd.exe的“win32作业”的任何作业似乎都无法满足等待请求。
我在Windows7/x64上的PowerShell 3.0版中遇到了这个问题
https://stackoverflow.com/questions/651223
复制相似问题