command line - stop - PowerShell-Conmutadores de inicio y de línea de proceso
start-process powershell (5)
A menos que el OP esté usando PowerShell Community Extensions, que proporciona un cmdlet Start-Process junto con muchos otros. Si este es el caso, entonces la solución de Glennular funciona bien, ya que coincide con los parámetros posicionales de pscx / start-process: -path (position 1) -arguments (positon 2).
Puedo correr bien
$msbuild = "C:/WINDOWS/Microsoft.NET/Framework/v3.5/MSBuild.exe"
start-process $msbuild -wait
Pero cuando ejecuto este código (a continuación) me aparece un error:
$msbuild = "C:/WINDOWS/Microsoft.NET/Framework/v3.5/MSBuild.exe /v:q /nologo"
start-process $msbuild -wait
¿Hay alguna manera de pasar los parámetros a MSBuild usando el proceso de inicio? Estoy abierto a no usar el proceso de inicio, la única razón por la que lo usé fue que necesitaba tener el "comando" como variable.
Cuando tengo
C: / WINDOWS / Microsoft.NET / Framework / v3.5 / MSBuild.exe / v: q / nologo
en línea por sí mismo, ¿cómo se maneja eso en Powershell?
¿Debería usar algún tipo de función de evaluación () en su lugar?
Advertencia
Si ejecuta PowerShell desde una ventana de cmd.exe creada por Powershell, la segunda instancia ya no espera a que se completen los trabajos.
cmd> PowerShell
PS> Start-Process cmd.exe -Wait
Ahora, desde la nueva ventana de cmd, ejecute PowerShell nuevamente y dentro de él inicie una segunda ventana de cmd: cmd2> PowerShell
PS> Start-Process cmd.exe -Wait
PS>
La segunda instancia de PowerShell ya no respeta la solicitud de espera y TODOS los procesos / trabajos en segundo plano devuelven el estado ''Completado'' incluso si todavía están en ejecución.
Descubrí esto cuando mi programa C # Explorer se usa para abrir una ventana de cmd.exe y la PS se ejecuta desde esa ventana, también ignora la solicitud de espera. Parece que cualquier PowerShell que sea un ''trabajo win32'' de cmd.exe no cumple con la solicitud de espera.
Me encontré con esto con la versión 3.0 de PowerShell en Windows 7 / x64
He encontrado que usar cmd funciona bien como alternativa, especialmente cuando necesita canalizar la salida de la aplicación llamada (especialmente cuando no tiene incorporado el registro, a diferencia de msbuild)
cmd /C "$msbuild $args" >> $outputfile
Usando parámetros explícitos, sería:
$msbuild = ''C:/WINDOWS/Microsoft.NET/Framework/v3.5/MSBuild.exe''
start-Process -FilePath $msbuild -ArgumentList ''/v:q'',''/nologo''
EDITAR: citas.
vas a querer separar tus argumentos en parámetros separados
$msbuild = "C:/WINDOWS/Microsoft.NET/Framework/v3.5/MSBuild.exe"
$arguments = "/v:q /nologo"
start-process $msbuild $arguments