Start Process - PowerShell


Start-Process launches a new process in the system, allowing you to execute external programs, scripts, or commands. It’s commonly used for automation tasks, managing processes, and creating interactive applications.


Start-Process [-FilePath] <string> [-ArgumentList] <string[]>
[-WorkingDirectory] <string> [-WindowStyle] <System.Diagnostics.ProcessWindowStyle>
[-Wait] [-PassThru] [-LoadUserProfile] [-Verb] <string> [-StandardInput] <string>
[-StandardOutput] <string> [-StandardError] <string>


-FilePath: Specifies the path to the program or script to launch.

-ArgumentList: An array of strings representing command-line arguments to pass to the process.

-WorkingDirectory: Sets the initial working directory for the process.

-WindowStyle: Controls the appearance of the process window. Options include Normal, Hidden, Maximized, Minimized, Normal, and Hidden (see ProcessWindowStyle for details).

-Wait: Suspends the execution of the current script until the launched process completes.

-PassThru: Returns a Process object representing the launched process.

-LoadUserProfile: Loads the user profile associated with the current user in the new process.

-Verb: Specifies a verb to be used for the file path, such as Open, Edit, or Print.

-StandardInput: Sets the stdin stream for the process.

-StandardOutput: Sets the stdout stream for the process.

-StandardError: Sets the stderr stream for the process.


Launch a program:

Start-Process "notepad.exe"

Pass arguments to a program:

Start-Process "python.exe" -ArgumentList "" "arg1"

Set the working directory:

Start-Process "cmd.exe" -WorkingDirectory "c:\temp"

Wait for a process to complete:

$p = Start-Process "ping.exe" -ArgumentList "" -Wait
Write-Host $p.ExitCode

Common Issues

Missing file: Ensure the specified path to the program or script is correct.

Access denied: Check if you have sufficient permissions to execute the process.

Window appears briefly and exits: Try passing the -Wait flag to prevent the script from continuing until the process completes.


Get process information: Use the -PassThru flag to return a Process object, which you can query for various properties such as PID, status, memory usage, and exit code.

Chain commands: Combine Start-Process with other commands, such as Get-Process or Stop-Process, to manage processes programmatically.