首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell - Start-Process和Cmdline开关

PowerShell - Start-Process和Cmdline开关
EN

Stack Overflow用户
提问于 2009-03-16 16:46:16
回答 5查看 269.1K关注 0票数 84

我可以很好地运行以下代码:

代码语言:javascript
复制
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" 
start-process $msbuild -wait

但是当我运行这段代码(如下所示)时,我得到一个错误:

代码语言:javascript
复制
$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()类型的函数呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-03-16 17:07:29

您将需要将参数分隔为单独的参数

代码语言:javascript
复制
$msbuild = "C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"
$arguments = "/v:q /nologo"
start-process $msbuild $arguments 
票数 129
EN

Stack Overflow用户

发布于 2009-03-16 17:10:00

使用显式参数,它将是:

代码语言:javascript
复制
$msbuild = 'C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe'
start-Process -FilePath $msbuild -ArgumentList '/v:q','/nologo'

编辑:报价。

票数 65
EN

Stack Overflow用户

发布于 2013-01-09 03:04:07

警告

如果您从PowerShell创建的cmd.exe窗口运行Powershell,则第二个实例不再等待作业完成。

代码语言:javascript
复制
cmd>  PowerShell
PS> Start-Process cmd.exe -Wait 

现在,在新的命令窗口中,再次运行PowerShell,并在其中启动第二个命令窗口: cmd2> PowerShell

代码语言:javascript
复制
PS> Start-Process cmd.exe -Wait
PS>   

PowerShell的第二个实例不再接受-Wait请求,所有后台进程/作业都返回“已完成”状态,即使它们仍在运行!

当我的C#资源管理器程序用来打开cmd.exe窗口并且PS从该窗口运行时,我发现了这一点,它也忽略了-Wait请求。作为cmd.exe的“win32作业”的任何作业似乎都无法满足等待请求。

我在Windows7/x64上的PowerShell 3.0版中遇到了这个问题

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/651223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档