2017-01-19 4 views
3

Возможно ли это? Я пробовал this blog, но он не работает. У меня есть макрофайл с примерно 50 или около того doskey макросами, которые используются в cmd.exe.Установить псевдонимы в PowerShell с помощью макросов doskey

Я бегу что-то вроде:

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 однако, они» все там.

Есть ли способ создать 50 псевдонимов в PowerShell для сопоставления с этими макросами? Командлет Set-Alias не очень помогает, поскольку команды сложнее, чем вызов простого командлета PowerShell. Есть сообщения, которые предлагают создавать функции в сценарии .ps1, однако это будет работать, только если я вручную напишу 50 различных функций для каждого из 50 макросов в файле. Кроме того, это будет включать в себя сохранение двух файлов - макрофайла для cmd и сценария PowerShell, который переводит их в функции.

+0

«Но это не сработает» - Вы можете быть более конкретным? –

+0

Спасибо, отредактированный вопрос, чтобы включить подробную информацию. –

+0

Я считаю, что это работает, если вы не используете модуль 'PSReadLine'. –

ответ

2

Модуль 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:\ 
+0

Проверено! Работает, спасибо! Похоже, что Powershell 3.0 также может иметь модуль «PsReadLine». Я попробовал (на Win10): «powershell -version 2.0» и «powershell -version 3.0», не удаляя этот модуль, а макрос doskey работал на 2.0, но не на 3.0. –

+1

FWIW, стоит подумать о том, чтобы вырезать 'doskey' и собственные функции ввода консоли для модуля' PSReadline'. Я думаю, что добавленная функциональность стоит того переключателя. –

Смежные вопросы