2010-03-18 78 views
7

新手PowerShell的问题猛砸别名:相当于在PowerShell中

我想打在PowerShell中的别名完全等同于该猛砸别名:

alias django-admin-jy="jython /path/to/jython-dev/dist/bin/django-admin.py" 

与它修修补补,到目前为止,我我们发现这很困难。

-PowerShell别名仅使用PowerShell命令工作+函数调用

- 不明确的方式,允许在一个PowerShell函数调用

-PowerShell无限数量的论点似乎要禁止标准输出


值得一提的是,我已经尝试了解决方案把这里提出:http://huddledmasses.org/powershell-power-user-tips-bash-style-alias-command/

而且已经去tten上加载了PowerShell的语法如下相关错误:


The term 'which' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spell 
ing of the name, or if a path was included, verify that the path is correct and try again. 
At C:\Users\Dan\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1:9 char:27 

+    $cmd = @(which <<<< $_.Content)[0] 
    + CategoryInfo   : ObjectNotFound: (which:String) [], CommandNotFoundException 
    + FullyQualifiedErrorId : CommandNotFoundException 
+0

我希望我可以给你多一个+1问这个问题!非常感谢。 – 2013-04-08 12:01:57

回答

8

PowerShell的别名可以用于任何“命令”,包括EXE文件:

new-alias n notepad.exe 

更新:如在评论中提到的,PowerShell的别名不允许参数。它们只是一个命令名称的简单“别名”,仅此而已。为了得到你所追求的(我想因为我不熟悉Bash的别名)试试这个:

function django-admin-jy { 
    jython.exe /path/to/jython-dev/dist/bin/django-admin.py @args 
} 

它采用所谓的理由泼洒PowerShell 2.0中的一个特点。您可以将@应用于引用数组或哈希表的变量名。在这种情况下,我们将其应用于名为args的变量,其中包含所有未命名的参数。

如果你想要一个真正通用的方法来创建带参数的别名功能,试试这个:

function New-BashStyleAlias([string]$name, [string]$command) 
{ 
    $sb = [scriptblock]::Create($command) 
    New-Item "Function:\global:$name" -Value $sb | Out-Null 
} 

New-BashStyleAlias django-admin-jy 'jython.exe /path/to/jython-dev/dist/bin/django-admin.py @args' 

关于乔尔的做法的问题,我怀疑他有which别名为Get-Command。尝试用Get-Command替换which

+0

Hi Kieth, New-Alias命令似乎不允许为可执行文件指定参数。 (也许是我错了吗?) 另外,我并不担心会提示马上回来,我只是想 “Django的管理-JY帮助” 表现酷似 “的Jython /路/到/ Jython的开发/距离/斌/ Django的管理员。py帮助“ (当然,还有能力指定任何其他参数。) 不是看起来懒惰(我一直在修补这一段时间),但我认为看到一个完整的功能对于bash别名模拟可能是最有帮助的每一个人。 – RightFullRudder 2010-03-21 19:34:56

+0

Kieth, 你的第一个答案的工作!第二个导致错误(太大了,贴在这里),但我很满足于仅仅使用第一(不要太多额外语法),和我授予你的赏金。 – RightFullRudder 2010-03-24 06:23:11

+0

我固定的第二种方法的问题(已经从先前的尝试一些遗留的代码)。 – 2010-03-24 19:26:03

1

函数可以有任意多个参数。您只需使用$args即可访问它们。

至于标准输出问题:您究竟遇到了什么问题?