运行cmd.exe内置函数的PowerShell别名语法?

运行cmd.exe内置函数的PowerShell别名语法?,powershell,alias,Powershell,Alias,由于我最近才从cmd.exe切换到PowerShell,我经常发现用熟悉的方式调用cmd来做一些小事情很方便。例如,要制作一个“裸”文件,列出这一点非常有用: PS> cmd /c dir /b dir1 dir2 file1.txt 我想为它创建一个别名,但我想不出正确的语法。到目前为止,我已经尝试: PS> Set-Alias dirb cmd /c dir /b # error (alias not created) PS> Set-Alias dirb

由于我最近才从
cmd.exe
切换到PowerShell,我经常发现用熟悉的方式调用
cmd
来做一些小事情很方便。例如,要制作一个“裸”文件,列出这一点非常有用:

PS> cmd /c dir /b
dir1
dir2
file1.txt
我想为它创建一个别名,但我想不出正确的语法。到目前为止,我已经尝试:

PS> Set-Alias dirb cmd /c dir /b        # error (alias not created)
PS> Set-Alias dirb "cmd /c dir /b"      # fail (alias doesn't work)
PS> Set-Alias dirb "cmd `"/c dir /b`""  # fail (alias doesn't work)

有什么建议吗?我正在寻找调用内置
cmd.exe
命令(如
dir
)的通用解决方案。我还想知道如何使用PowerShell cmdlet以正确的方式生成裸输出,但这是目前的次要问题。这个问题是关于从别名调用
cmd.exe
的正确语法。

别名不是为此类任务设计的。别名只是命令的另一个名称。改为使用该函数

function dirb { cmd /c dir /b }

不幸的是,powershell中的别名不接受参数-您需要为此定义一个函数。欲了解更多信息

get-help aliases

我相信你想要的是一个函数,而不是别名。例如:

  function dirb {
    cmd /c dir $args[0] /b
     }
在PS提示符下,运行notepad$profile,将其粘贴到您的配置文件中,然后当您打开PS控制台时,它将自动加载,您可以执行以下操作:

目录c:\somedir


有关函数的更多信息,请参阅获取有关函数的帮助。

您究竟为什么要使用powershell打开命令提示符?这似乎违背了目的


我更喜欢列出文件的别名是
ls

,我认为Powershell中的别名也是
dir | foreach{$\uuu.name}
dir-name
也是纯Powershell。@Roman,谢谢你的纯高级答案!您可能希望的一个原因是:[PS]C:\>measure命令{ls C:\windows-recurse-name}选择totalseconds | ft-auto-totalseconds-------46.8366258[PS]C:\>measure命令{cmd/C dir C:\windows/b/s}选择totalseconds | ft-auto totalseconds-------5.3308489原因很多。问题中的
cmd
可能只是任何本机应用程序的一个示例。效果很好,我还使用了
@args
而不是
$args[0]
,因此我的函数可以接受多个参数。谢谢,我知道PS别名不带参数,但我希望别名更像宏:纯文本替换,其中替换的文本可以包含空格。我想这就是为什么它们被称为“别名”,而不是“宏”。