使用 doskey 宏在 PowerShell 中设置别名

Set aliases in PowerShell using doskey macros

这可能吗?我试过 this blog,但没有用。 我有一个包含大约 50 个 doskey 宏的宏文件,用于 cmd.exe.

我 运行 类似:

doskey /exename=powershell.exe /macrofile=C:\macrofile.txt

doskey /exename=powershell.exe blah=echo blah

但是尝试命令 blah 给出了一个错误:

blah : The term 'blah' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

但是,如果我用 doskey /macros:powershell.exe 列出它们,它们都在那里。

有没有办法在 PowerShell 中创建 50 个别名来映射到这些宏? Set-Alias cmdlet 没有太大帮助,因为这些命令比调用简单的 PowerShell cmdlet 更复杂。有些帖子建议在 .ps1 脚本中创建函数,但是,只有当我为文件中的 50 个宏中的每一个宏手动编写 50 个不同的函数时,这才会起作用。此外,这将涉及维护两个文件 - cmd 的宏文件和将这些文件转换为函数的 PowerShell 脚本。

PSReadLine 模块(随 PowerShell 5.0 或更高版本提供)与 doskey 不兼容,后者依赖于本机控制台输入功能。我在 Windows 10/PowerShell 5:

上测试过
PS C:\> Remove-Module PSReadLine
PS C:\> doskey /exename=powershell.exe g=Get-Location
PS C:\> g

Path
----
C:\