如何在profile.ps1中为别名添加命令行参数到powershell?

时间:2017-07-22 03:52:08

标签: powershell sublimetext3 alias

我仍然是Powershell的新手,但我想将我喜欢的编辑器添加到Powershell中的Alias中。

我编辑了profile.ps1中的C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1,它会在PowerShells启动时自动运行。

我尝试输入New-Alias np notepad.exe,每次启动PowerShell时都能正常运行。

但是,我想使用Sublime Text 3作为我的编辑。我按照此SO页面中的说明操作:How can I write a PowerShell alias with arguments in the middle?

Sublime Text所需的命令行是"C:\Program Files\Sublime Text 3\sublime_text.exe" -n [FirstArg]

我说的是这样的:function sublime { 'C:\Program Files\Sublime Text 3\sublime_text.exe' -n $args }

它不起作用,我得到了这样的错误:

At C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1:5 char:72
+ ... lime {  'C:\Program Files\Sublime Text 3\sublime_text.exe' -n $args }
+                                                                ~~
Unexpected token '-n' in expression or statement.
At C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1:5 char:75
+ ... lime {  'C:\Program Files\Sublime Text 3\sublime_text.exe' -n $args }
+                                                                   ~~~~~
Unexpected token '$args' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : UnexpectedToken

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

如果不是Sublime用户,我怀疑这应该有效:

function Start-Sublime {
    param([string]$args)

    $limeArgs = [string]::Empty
    if ($args -ne $null) {
        $limeArgs = $args
    }

    Start-Process "$env:ProgramFiles\Sublime Text 3\sublime_text.exe" -n $limeArgs
}

Set-Alias lime Start-Sublime

不是最漂亮的PowerShell代码,但我想它会完成你所追求的目标。它比隐秘的&运算符更容易理解。