Start-Process

Inicia uno o varios procesos en el equipo local.

Syntax

Start-Process
     [-FilePath] <string>
     [[-ArgumentList] <string[]>]
     [-Credential <pscredential>]
     [-WorkingDirectory <string>]
     [-LoadUserProfile]
     [-NoNewWindow]
     [-PassThru]
     [-RedirectStandardError <string>]
     [-RedirectStandardInput <string>]
     [-RedirectStandardOutput <string>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [-UseNewEnvironment]
     [<CommonParameters>]
Start-Process
     [-FilePath] <string>
     [[-ArgumentList] <string[]>]
     [-WorkingDirectory <string>]
     [-PassThru]
     [-Verb <string>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [<CommonParameters>]

Description

El Start-Process cmdlet inicia uno o varios procesos en el equipo local. De forma predeterminada, Start-Process crea un nuevo proceso que hereda todas las variables de entorno definidas en el proceso actual.

Para especificar el programa que se ejecuta en el proceso, escriba un archivo ejecutable o un archivo de script, o un archivo que se pueda abrir mediante un programa en el equipo. Si especifica un archivo no ejecutable, Start-Process inicia el programa asociado al archivo, similar al Invoke-Item cmdlet .

Puede usar los parámetros de Start-Process para especificar opciones, como cargar un perfil de usuario, iniciar el proceso en una nueva ventana o usar credenciales alternativas.

Ejemplos

Ejemplo 1: Iniciar un proceso que use valores predeterminados

En este ejemplo se inicia un proceso que usa el Sort.exe archivo en la carpeta actual. El comando usa todos los valores predeterminados, incluido el estilo de ventana predeterminado, la carpeta de trabajo y las credenciales.

Start-Process -FilePath "sort.exe"

Ejemplo 2: Imprimir un archivo de texto

En este ejemplo se inicia un proceso que imprime el C:\PS-Test\MyFile.txt archivo.

Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print

Ejemplo 3: Iniciar un proceso para ordenar elementos a un nuevo archivo

En este ejemplo se inicia un proceso que ordena los elementos del TestSort.txt archivo y devuelve los elementos ordenados en los Sorted.txt archivos. Los errores se escriben en el SortError.txt archivo. El parámetro UseNewEnvironment especifica que el proceso se ejecuta con sus propias variables de entorno.

$processOptions = @{
    FilePath = "sort.exe"
    RedirectStandardInput = "TestSort.txt"
    RedirectStandardOutput = "Sorted.txt"
    RedirectStandardError = "SortError.txt"
    UseNewEnvironment = $true
}
Start-Process @processOptions

En este ejemplo se usa la expansión para pasar parámetros al cmdlet . Para obtener más información, consulte about_Splatting.

Ejemplo 4: Iniciar un proceso en una ventana maximizada

En este ejemplo se inicia el Notepad.exe proceso. Maximiza la ventana y la conserva hasta que se finalice el proceso.

Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized

Ejemplo 5: Iniciar PowerShell como administrador

En este ejemplo se inicia PowerShell mediante la opción Ejecutar como administrador .

Start-Process -FilePath "powershell" -Verb RunAs

Ejemplo 6: Uso de verbos diferentes para iniciar un proceso

En este ejemplo se muestra cómo buscar los verbos que se pueden usar al iniciar un proceso. Los verbos disponibles están determinados por la extensión de nombre de archivo del archivo que se ejecuta en el proceso.

$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.verbs

open
runas
runasuser

En el ejemplo se usa New-Object para crear un objeto System.Diagnostics.ProcessStartInfo para powershell.exe, el archivo que se ejecuta en el proceso de PowerShell. La propiedad Verbs del objeto ProcessStartInfo muestra que puede usar los verbos Open y RunAs con powershell.exe, o con cualquier proceso que ejecute un .exe archivo.

Ejemplo 7: Especificar argumentos para el proceso

Ambos comandos inician el intérprete de comandos de Windows, emitiendo un dir comando en la Program Files carpeta . Dado que este nombredecarpeta contiene un espacio, el valor necesita rodeado de comillas con escape. Tenga en cuenta que el primer comando especifica una cadena como ArgumentList. El segundo comando es una matriz de cadenas.

Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""

Parámetros

-ArgumentList

Especifica parámetros o valores de parámetro que se van a usar cuando este cmdlet inicia el proceso. Los argumentos se pueden aceptar como una sola cadena con los argumentos separados por espacios o como una matriz de cadenas separadas por comas. El cmdlet combina la matriz en una sola cadena con cada elemento de la matriz separada por un solo espacio.

Las comillas externas de las cadenas de PowerShell no se incluyen cuando los valores ArgumentList se pasan al nuevo proceso. Si los parámetros o los valores de parámetro contienen un espacio o comillas, deben estar rodeados con comillas dobles con escape. Para obtener más información, consulte about_Quoting_Rules.

Para obtener los mejores resultados, use un solo valor ArgumentList que contenga todos los argumentos y los caracteres de comillas necesarios.

Type:String[]
Aliases:Args
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Especifica una cuenta de usuario con permiso para realizar esta acción. De forma predeterminada, el cmdlet usa las credenciales del usuario actual.

Escriba un nombre de usuario, como User01 o Domain01\User01, o escriba un objeto PSCredential generado por el Get-Credential cmdlet . Si escribe un nombre de usuario, se le pedirá que escriba la contraseña.

Las credenciales se almacenan en un objeto PSCredential y la contraseña se almacena como SecureString.

Nota:

Para obtener más información sobre la protección de datos SecureString , consulte ¿Cómo es secure is SecureString?.

Type:PSCredential
Aliases:RunAs
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Especifica la ruta de acceso opcional y el nombre de archivo del programa que se ejecuta en el proceso. Escriba el nombre de un archivo ejecutable o de un documento, como un .txt archivo o .doc , que está asociado a un programa en el equipo. Este parámetro es obligatorio.

Si especifica solo un nombre de archivo, use el parámetro WorkingDirectory para especificar la ruta de acceso.

Type:String
Aliases:PSPath
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-LoadUserProfile

Indica que este cmdlet carga el perfil de usuario de Windows almacenado en la clave del HKEY_USERS Registro para el usuario actual.

Este parámetro no afecta a los perfiles de PowerShell. Para obtener más información, consulte about_Profiles.

Type:SwitchParameter
Aliases:Lup
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoNewWindow

Inicie el nuevo proceso en la ventana de la consola actual. De forma predeterminada en Windows, PowerShell abre una nueva ventana.

No puede usar los parámetros NoNewWindow y WindowStyle en el mismo comando.

Type:SwitchParameter
Aliases:nnw
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Devuelve un objeto de proceso por cada proceso que el cmdlet inició. De forma predeterminada, este cmdlet no genera ninguna salida.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardError

Especifica un archivo. Este cmdlet envía los errores generados por el proceso a un archivo que especifique. Escriba la ruta de acceso y el nombre de archivo. De forma predeterminada, los errores se muestran en la consola.

Type:String
Aliases:RSE
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardInput

Especifica un archivo. Este cmdlet lee la entrada del archivo especificado. Escriba la ruta de acceso y el nombre de archivo del archivo de entrada. De forma predeterminada, el proceso obtiene su entrada a través del teclado.

Type:String
Aliases:RSI
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RedirectStandardOutput

Especifica un archivo. Este cmdlet envía la salida generada por el proceso a un archivo que especifique. Escriba la ruta de acceso y el nombre de archivo. De forma predeterminada, los resultados se muestran en la consola.

Type:String
Aliases:RSO
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseNewEnvironment

Indica que este cmdlet usa nuevas variables de entorno especificadas para el proceso. De forma predeterminada, el proceso iniciado se ejecuta con las variables de entorno heredadas del proceso primario.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Verb

Especifica un verbo que se va a usar cuando este cmdlet inicia el proceso. Los verbos disponibles están determinados por la extensión de nombre de archivo del archivo que se ejecuta en el proceso.

En la siguiente tabla se muestran los verbos para algunos tipos de archivo de proceso comunes.

Tipo de archivo Verbos
.cmd Edit, Open, Print, , RunAs, RunAsUser
.exe Open, , RunAs, RunAsUser
.txt Open, , Print, PrintTo
.Wav Open, Play

Para buscar los verbos que se pueden usar con el archivo que se ejecuta en un proceso, use el New-Object cmdlet para crear un objeto System.Diagnostics.ProcessStartInfo para el archivo. Los verbos disponibles se encuentran en la propiedad Verbs del objeto ProcessStartInfo . Para obtener información detallada, vea los ejemplos.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Wait

Indica que este cmdlet espera a que se complete el proceso especificado y sus descendientes antes de aceptar más entradas. Este parámetro suprime el símbolo del sistema o conserva la ventana hasta que finalicen los procesos.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WindowStyle

Especifica el estado de la ventana que se usa para el nuevo proceso. El valor predeterminado es Normal. Los valores permitidos para este parámetro son los siguientes:

  • Normal
  • Hidden
  • Minimized
  • Maximized

No puede usar los parámetros WindowStyle y NoNewWindow en el mismo comando.

Type:ProcessWindowStyle
Accepted values:Normal, Hidden, Minimized, Maximized
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WorkingDirectory

Especifica la ubicación en la que debe iniciarse el nuevo proceso. El valor predeterminado es la ubicación del archivo ejecutable o del documento que se está iniciando. No se admiten los caracteres comodín. La ruta de acceso no debe contener caracteres que se interpretarían como caracteres comodín.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

None

No se pueden canalizar objetos a este cmdlet.

Salidas

None

De forma predeterminada, este cmdlet no devuelve ninguna salida.

Process

Cuando se usa el parámetro PassThru , este cmdlet devuelve un objeto Process .

Notas

Windows PowerShell incluye los siguientes alias para Start-Process:

  • saps
  • start

Los comandos nativos son archivos ejecutables instalados en el sistema operativo. Estos ejecutables se pueden ejecutar desde cualquier shell de línea de comandos, como PowerShell. Normalmente, el comando se ejecuta exactamente igual que se haría en bash o cmd.exe. El Start-Process cmdlet se puede usar para ejecutar cualquier comando nativo, pero solo debe usarse cuando necesite controlar cómo se ejecuta el comando.

De forma predeterminada, Start-Process inicia un proceso de forma asincrónica. El control se devuelve instantáneamente a PowerShell incluso si el nuevo proceso todavía se está ejecutando.

  • En el sistema local, el proceso iniciado reside en independiente del proceso de llamada.
  • En un sistema remoto, el nuevo proceso finaliza cuando finaliza la sesión remota, inmediatamente después del Start-Process comando . Por lo tanto, no puede usar Start-Process en una sesión remota esperando que el proceso iniciado viva la sesión.

Si necesita usar Start-Process en una sesión remota, invoquela con el parámetro Wait . O bien, podría usar otros métodos para crear un nuevo proceso en el sistema remoto.

Al usar el parámetro Wait , Start-Process espera a que el árbol de procesos (el proceso y todos sus descendientes) salgan antes de devolver el control. Esto es diferente del comportamiento del Wait-Process cmdlet, que solo espera a que se cierren los procesos especificados.

En Windows, el caso de uso más común de Start-Process es usar el parámetro Wait para bloquear el progreso hasta que se cierre el nuevo proceso. En el sistema que no es de Windows, esto rara vez es necesario, ya que el comportamiento predeterminado de las aplicaciones de línea de comandos es equivalente a Start-Process -Wait.

Este cmdlet se implementa mediante el método Start de la clase System.Diagnostics.Process . Para obtener más información sobre este método, vea Process.Start Method.