Inicio de procesos con Windows PowerShell
-
El Cmdlet
Start-Process
en PowerShell -
los parámetros del cmdlet
Start-Process
-
los beneficios de PowerShell
Start-Process
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
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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn