【问题标题】:Set aliases in PowerShell using doskey macros使用 doskey 宏在 PowerShell 中设置别名
【发布时间】:2017-01-19 03:26:30
【问题描述】:

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

我运行类似:

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

doskey /exename=powershell.exe blah=echo blah

但是尝试命令blah 会报错:

blah :术语“blah”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

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

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

【问题讨论】:

  • “但它不起作用” - 你能说得更具体点吗?
  • 谢谢,已编辑问题以包含详细信息。
  • 我相信如果您不使用PSReadLine 模块,这将有效。

标签: powershell alias doskey


【解决方案1】:

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:\

【讨论】:

  • 已验证!工作,谢谢!似乎 Powershell 3.0 也可能具有“PsReadLine”模块。我试过(在 Win10 上):'powershell -version 2.0' 和 'powershell -version 3.0' 没有删除这个模块,doskey 宏在 2.0 但不是 3.0 上工作。
  • FWIW,值得考虑放弃 doskeyPSReadline 模块的本机控制台输入功能。我认为额外获得的功能值得切换。
猜你喜欢
  • 2019-01-07
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多