Running CMD commands in PowerShell
PowerShell by default does not support the native cmd.exe command such as „dir“. Instead, it uses historic aliases called “dir” to point you to the...
- Written By: ps1
- Last Updated: April 22, 2025
- 3 minutes read
PowerShell by default does not support the native cmd.exe command such as „dir“. Instead, it uses historic aliases called “dir” to point you to the...
PowerShell by default does not support the native cmd.exe command such as „dir“. Instead, it uses historic aliases called “dir” to point you to the closest PowerShell cmdlet:
PS C:\> Get-Command -Name dir | ft -AutoSize CommandType Name Version Source ----------- ---- ------- ------ Alias dir -> Get-ChildItem
This explains why “dir” in PowerShell won’t support the switches and arguments it used to in cmd.exe and batch files, like “cmd.exe /w”.
If you must use the old cmd-style commands, launch an original cmd.exe with parameter /c (for “command”), issue the command, and process the results inside PowerShell. This example runs cmd.exe /c, and then runs the old cmd command “dir” with its argument /w:
PS C:\> cmd.exe /c dir /w
An even safer way is to use the „–%“ operator:
PS C:\> cmd.exe --% /c dir /w
When it is specified at the beginning of arguments, then the PowerShell parser leaves the argument untouched, and you can even use environment variable notations like in cmd.exe. The backdraw: you can no longer use PowerShell techniques inside the arguments, like variables:
PS C:\> cmd.exe --% /c dir %WINDIR% /w
Contact our sales team to get a personalized demo of our database management software for SQL Server!