Inicio de procesos con Windows PowerShell

  1. El Cmdlet Start-Process en PowerShell
  2. los parámetros del cmdlet Start-Process
  3. los beneficios de PowerShell Start-Process
Inicio de procesos con Windows PowerShell

El cmdlet Start-Process es un comando de PowerShell que se utiliza para iniciar uno o más procesos de forma controlada y administrada. De forma predeterminada, el proceso iniciado hereda todos los entornos actuales de PowerShell.

El cmdlet Start-Process puede ejecutar o ejecutar un archivo ejecutable, un Batch Script, un comando de MS-DOS y PowerShell, incluso una aplicación Java. Además, Windows PowerShell puede usar el cmdlet Start-Process para especificar el perfil de usuario, el estado de Windows y las credenciales, etc.

Este artículo discutirá cómo funciona el cmdlet Start-Process y cómo se utiliza al escribir nuestros scripts.

El Cmdlet Start-Process en PowerShell

El cmdlet Start-Process ejecuta uno o más procesos, archivos ejecutables o script, o cualquier archivo que un software instalado pueda abrir en la computadora.

El cmdlet Start-Process tiene una sintaxis básica que se muestra a continuación cuando se usa Windows PowerShell.

Start-Process <string>

los parámetros del cmdlet Start-Process

El cmdlet Start-Process puede usar parámetros para agregar más potencia, funcionalidad y flexibilidad al cmdlet.

Iniciar nuevo proceso o ejecutable

Como se mencionó, el uso más básico del comando Start-Process es proporcionar el archivo ejecutable, el archivo de script o Batch, o un comando como la siguiente sintaxis. Por ejemplo, una aplicación de Bloc de notas se abrirá cuando se la llame con la siguiente sintaxis.

Start-Process notepad.exe

Alternativamente, el cmdlet puede usar el parámetro -FilePath para especificar la ubicación del archivo que queremos ejecutar.

Start-Process -FilePath notepad.exe

También podemos especificar la ruta completa del archivo ejecutable o el archivo Batch a continuación. En el siguiente ejemplo, ejecutaremos un archivo Batch ubicado en el directorio D:\scripts en el siguiente ejemplo.

Start-Process -FilePath "D:\scripts\backup.bat"

Establecer entrada estándar como archivo

Podemos especificar una entrada de proceso con la entrada estándar donde el contenido de entrada estándar proporcionado se redirige al proceso dado. En este caso, el parámetro -RedirectStandardInput puede establecer un archivo como entrada en el proceso recién creado.

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardInput test.txt

En el ejemplo de sintaxis anterior, la entrada ejecutable backup.bat proviene del archivo test.txt.

Establecer salida estándar como archivo

Cuando se ejecuta un proceso, puede crear algún resultado que podamos imprimir en la terminal, la pantalla o el archivo. Podemos usar el parámetro -RedirectStandardOuput para especificar la salida en un archivo.

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardOutput test.txt

La salida ejecutable backup.bat proviene del archivo test.txt en la sintaxis del ejemplo anterior.

Establecer salida de error estándar como archivo

Mientras se ejecuta un proceso, pueden ocurrir errores y la información sobre estos errores se imprime en la consola o terminal de manera predeterminada. El uso del parámetro -RedirectStandardError puede redirigir la salida a un archivo como el siguiente.

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardError errors.txt

En el ejemplo de sintaxis anterior, si encontramos algún error al ejecutar el ejecutable backup.bat, los errores se imprimirán en el archivo errors.txt.

Establecer directorio de trabajo

Por defecto, el nuevo proceso se ejecuta en el directorio de trabajo actual, que suele ser la unidad del sistema C:. Sin embargo, podemos configurar un nuevo directorio de trabajo a continuación usando el parámetro -WorkingDirectory.

Start-Process notepad.exe -WorkingDirectory "D:\"

Para este ejemplo,

Crear nuevo entorno

Junto con nuestros parámetros anteriores discutidos en el artículo, podemos fusionarlos en un bloque de script.

El parámetro -UseNewEnvironment especifica que el proceso se ejecuta con sus variables de entorno.

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

Start-Process en ventana maximizada

El comando Start-Process puede iniciar un proceso de línea de comandos o un proceso de GUI que puede tener alguna GUI.

El script puede establecer el tamaño de la ventana de la GUI con el parámetro -WindowStyle. Este parámetro se puede configurar como Maximizado para maximizar la nueva ventana de proceso.

Start-Process notepad.exe -WindowStyle Maximized

Start-Process con un usuario diferente

De forma predeterminada, el proceso iniciado se ejecuta con los privilegios de usuario actuales. Sin embargo, el cmdlet Start-Process puede cambiar los privilegios del proceso con el parámetro -Credential proporcionando el nuevo usuario con el que queremos ejecutar el proceso.

Si ingresa su nombre de usuario, se le pedirá que ingrese una contraseña.

Start-Process notepad.exe -Credential <username>

Start-Process como administrador

Podemos ejecutar la aplicación como administrador con el parámetro - Verb.

Start-Process notepad.exe -Verb RunAs
Nota
Es posible que PowerShell aún deba solicitar su confirmación debido al Control de cuentas de usuario (UAC) de su computadora local a pesar de ejecutarse como administrador. No recomendamos deshabilitar completamente UAC por motivos de seguridad.

Start-Process con argumentos especificados

Los comandos, procesos o archivos Batch pueden aceptar uno o varios argumentos para obtener datos de entrada.

Estos datos de entrada se denominan argumento, y el comando Start-Process puede proporcionar argumentos al proceso iniciado con -ArgumentList. Lista de argumentos proporcionados pasados ​​a los procesos como argumentos.

Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%systemdrive%\program files`""

los beneficios de PowerShell Start-Process

  • Los archivos de script solo se pueden abrir localmente. Es una técnica de seguridad que previene ataques remotos usando scripts de Windows PowerShell.
  • El cmdlet se ejecuta en un entorno de secuencias de comandos compatible con Microsoft. Siempre que se admita Windows PowerShell, Microsoft dedicará recursos para mantener el idioma actualizado, con revisiones de actualización.
  • Una gran comunidad de desarrolladores comparte fácilmente conocimientos específicamente con el cmdlet Start-Process.
  • Los cmdlets y los almacenes de datos del sistema utilizan convenciones de nomenclatura y sintaxis uniforme y estándar para compartir datos fácilmente.
  • Con este cmdlet, se simplifica la navegación del sistema operativo, lo que permite a los usuarios familiarizarse con el sistema de archivos, el registro y otros datos.
  • Los objetos pueden manipularse fácilmente directamente o enviarse a otras herramientas o bases de datos.
  • Los proveedores y desarrolladores de software pueden crear herramientas personalizadas.
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn