In Linux, we have the "which" command to find out the path of an executable.
What is its Windows equivalent? Is there any PowerShell command for doing that?


Newer versions of Windows (I think Windows 2003 and up) have the where command:

C:\>where ping

And for PowerShell, explicitly add the .exe suffix:

PS C:\>where.exe ping
  • 6
    where work for me in Windows 7
    – Nam G VU
    Oct 10 '11 at 16:30
  • 9
    This only works in cmd, not in PowerShell (in my experience)
    – Thomas
    Oct 13 '14 at 15:15
  • where /r c:\ fileName adding the /r c:\ allowed me to perform a recursive search starting at the root of the C drive using Windows 7 Professional it seems to not be in access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…
    – CrandellWS
    Sep 25 '15 at 9:09
  • 11
    in Powershell you should say where.exe ping because where is by default aliased to Where-Object cmdlet which is completely different story
    – maoizm
    May 27 '18 at 11:18
  • 1
    where.exe explicitly rather than where works for me in PowerShell
    – drkvogel
    Sep 26 '19 at 15:35

Yes, Get-Command will find all commands including executables:

PS\> Get-Command ipconfig

If you want to limit the commands to just executables:

PS\> Get-Command -CommandType Application

Will find all exes in your path. There is an alias for interactive use:

PS\> gcm net* -CommandType Application

To get the path of an executable, you can use the Path property of the returned object. For example:

PS\> (Get-Command notepad.exe).Path

For more info, run man Get-Command -full.


where.exe explicitly rather than where works for me in PowerShell:

PS C:\Users\birdc> where ping
PS C:\Users\birdc> where.exe ping
  • Works on Windows 10 1903. Sep 26 '19 at 15:41
  • In PowerShell? I'm on Windows 10 Pro 1903, and where ping gives me nothing in PowerShell.
    – drkvogel
    Sep 26 '19 at 15:53
  • Sorry I was unclear. I meant where.exe. Sep 26 '19 at 16:21

In addition to user10404, the help command will work on aliases, so you can use the same command name (gcm) for help and interactive use:

help gcm -Parameter *
# or
man gcm -Par *

If you want to make it short, create a one line which.cmd file with the content

echo %~$PATH:1

This will search the first parameter (%1) fed to the script and display the full path of found file. Good place to put this script in windows 10 is %LOCALAPPDATA%\Microsoft\WindowsApps\which.cmd

And you get your which command in path.

c:\>which cmd.exe

c:\>echo C:\Windows\System32\cmd.exe



C:\Users\X>where ping




PS C:\Users\X> Get-Command ping
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     PING.EXE                                           10.0.1776… C:\WINDOWS\system32\PING.EXE

PS C:\Users\X>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy