2010-03-18 83 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即可訪問它們。

至於標準輸出問題:您究竟遇到了什麼問題?