2017-01-19 7 views
3

これは可能ですか?私はthis blogを試しましたが、動作しません。 私はcmd.exeで使用されているマクロが約50かそれ以上のdoskeyマクロを持っています。doskeyマクロを使用してPowerShellでエイリアスを設定する

私のようなものを実行します。

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コマンドレットは、コマンドが単純なPowerShellコマンドレットを呼び出すよりも複雑であるため、あまり役に立ちません。しかし、.ps1スクリプトで機能を作成することを提案する投稿がありますが、これはファイル内の50個のマクロごとに50個の異なる機能を手動で書き込む場合にのみ機能します。また、これには、cmd用のマクロファイルと、これらを関数に変換するPowerShellスクリプトという2つのファイルを管理する必要があります。

+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マクロは3.0ではなく2.0で動作しました。 –

+1

FWIWでは、 'doskey'と' PSReadline'モジュールのネイティブコンソール入力機能を削除することを検討する価値があります。私は余分な機能がスイッチに値すると思います。 –

関連する問題