在bash,我有一堆參數添加到現有的程序/功能,例如別名:在powershell中使用另一個cmdlet的參數定義?
alias grep='grep --color'
我知道這不是最好的比喻,但有一個簡單的方法來做到這一點在PowerShell中?好像Set-Alias不讓你指定參數。
您可以爲cmdlet創建別名,但不能爲由cmdlet及其參數組成的命令創建別名 。
他們建議創建一個新的cmdlet來這樣做,但我寧願能夠通過額外的參數,而無需硬編碼在所有新的cmdlet中允許PARAMS(像新ProxyCommand似乎需要你做)。這樣,我不必知道代理cmdlet中的代理/別名cmdlet參數何時發生更改和更改。
那麼,什麼是對
- 不是靜態複製參數定義的別名/代理cmdlet中的最佳解決方案。讓原始cmdlet執行驗證或動態引用它。
- 所以你必須做一些明確的,以獲得不同的行爲
- 已經在別名/代理cmdlet的
最近我的別名/新cmdlet的值傳遞給現有的參數使用的別名/名稱不同的小命令可以認爲是類似於下面的東西,儘管語法可能是錯誤的。似乎也不會像管道那樣發揮最好的效果,但可能會以某種方式解決問題。
& $proxiedcommand $additionaldefaultparams $rawparamsfromread-host
還是有使用事情proxy cmdlets動態實例像下面的參數的方法嗎?
function aliased-cmdlet
{
[CmdletBinding((Get-Command Original-Cmdlet)._cmdletBindingsettings_)]
Param(
(Get-Command Original-Cmdlet)._paramsettings_)
)
Original-Cmdlet -CustomDefault Value -Whatever Else
}
這個[Jeff Hicks的例子](https://mcpmag.com/articles/2013/11/05/blacksmith-part-7.aspx)或者這個[Don Jones的漫遊](http://windowsitpro.com/blog/powershell-proxy-functions)可能有幫助 – BenH
您可能需要考慮編寫一個使用'$ myinvocation',特別是'$ myinvocation.line'的scriptlet(腳本函數),並解析其中的任何參數已提供,您需要修改或覆蓋。例如,請參閱[關於「獲取所有參數」的MSDN頁面](https://blogs.msdn.microsoft。com/powershell/2007/05/31/getting-all-your-parameters /) –
@BenH,我稍微更新了我的問題。我認爲代理人命令已經接近尾聲,但並沒有解決參數變得過時的問題。看起來解決方案是獲取更多元數據並動態執行代理cmdlet生成。似乎有點過度設計和脆弱,我覺得應該是一個簡單的解決方案。 – undefinedvariable