How to Start Processes With Windows PowerShell
-
the
Start-Process
Cmdlet in PowerShell -
the
Start-Process
Cmdlet Parameters -
the Benefits of PowerShell
Start-Process
The Start-Process
cmdlet is a PowerShell command used to start single or more processes in a controlled and managed way. By default, the started process inherits all current PowerShell environments.
The Start-Process
cmdlet can execute or run an executable file, batch script, MS-DOS and PowerShell command, even Java application. In addition, Windows PowerShell can use the Start-Process
cmdlet to specify user profile, windows status, and credentials, etc.
This article will discuss how the Start-Process
cmdlet works and utilize it when writing our scripts.
the Start-Process
Cmdlet in PowerShell
The Start-Process
cmdlet executes one or more processes, executable or script files, or any files that an installed software can open on the computer.
The Start-Process
cmdlet has a basic syntax shown below when using Windows PowerShell.
Start-Process <string>
the Start-Process
Cmdlet Parameters
The Start-Process
cmdlet can use parameters to add more power, functionality, and flexibility to the cmdlet.
Start New Process or Executable
As mentioned, the most basic usage of the Start-Process
command is providing the executable file, batch or script file, or command like the below syntax. For example, a Notepad application will open when called with the following syntax.
Start-Process notepad.exe
Alternatively, the cmdlet can use the -FilePath
parameter to specify the file location we want to execute.
Start-Process -FilePath notepad.exe
We can also specify the complete path of the executable file or batch file below. In the following example, we will execute a batch file located under the D:\scripts
directory in the following example.
Start-Process -FilePath "D:\scripts\backup.bat"
Set Standard Input as File
We can specify a process input with the standard input where provided standard input content is redirected into the given process. In this case, the -RedirectStandardInput
parameter can set a file as input into the newly created process.
Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardInput test.txt
In the example syntax above, the backup.bat
executable input comes from the file test.txt
.
Set Standard Output as File
When a process is executed, it may create some output that we can print to the terminal, screen, or file. We can use the -RedirectStandardOutput
parameter to specify the output into a file.
Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardOutput test.txt
The backup.bat
executable output comes from the file test.txt
in the example syntax above.
Set Standard Error Output as File
While running a process, errors may occur, and information about these errors is printed into the console or terminal by default. Using the -RedirectStandardError
parameter can redirect the output into a file like below.
Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardError errors.txt
In the example syntax above, if we encountered any errors while running the backup.bat
executable, the errors will be printed in the file errors.txt
.
Set Working Directory
By default new process is executed in the current working directory, which is commonly the system drive C:
. However, we can set a new working directory below using the -WorkingDirectory
parameter.
Start-Process notepad.exe -WorkingDirectory "D:\"
For this example,
Create New Environment
Together with our previous parameters discussed in the article, we can merge them into one script block.
The -UseNewEnvironment
parameter specifies that the process runs with its environment variables.
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
Start-Process
in Maximized Window
The Start-Process
command can start a command-line process or a GUI process that may have some GUI.
The script can set the GUI window size with the -WindowStyle
parameter. This parameter can be set as Maximized to maximize the new process window.
Start-Process notepad.exe -WindowStyle Maximized
Start-Process
With a Different User
By default, the started process is executed as the current user privileges. However, the Start-Process
cmdlet can change the process’s privileges with the -Credential
parameter by providing the new user with whom we want to execute the process.
If you type in your username, you will be prompted to enter a password.
Start-Process notepad.exe -Credential <username>
Start-Process
as an Administrator
We can run the application as an administrator with the - Verb
parameter.
Start-Process notepad.exe -Verb RunAs
Start-Process
With Specified Arguments
Commands, processes, or batch files may accept single or multiple arguments to get input data.
This input data is called an argument, and the Start-Process
command can provide arguments to the started process with the -ArgumentList
. Provided argument list passed into the processes as arguments.
Start-Process -FilePath "$env:comspec" -ArgumentList "/c", "dir", "`"%systemdrive%\program files`""
the Benefits of PowerShell Start-Process
- Script files only can be opened locally. It is a security technique that prevents remote attacks using Windows PowerShell scripts.
- The cmdlet runs in a scripting environment that Microsoft supports. As long as Windows PowerShell is supported, Microsoft will dedicate resources to keep the language current, with update revisions.
- A vast developer community readily shares knowledge specifically with the
Start-Process
cmdlet. - The cmdlets and system data stores use standard, consistent syntax and naming conventions to share data easily.
- Using this cmdlet, the navigation of the operating system is simplified, which lets users familiarize the file system, the registry, and other data.
- Objects can be easily manipulated directly or sent to other tools or databases.
- Software vendors and developers can build custom tools.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn