2017-03-02 13 views
1

質問: 関数とスイッチの両方を呼び出す別名を設定することはできますか?関数とスイッチを使用したPowerShellネイティブコマンドレットセットアライブ

ここでは、私が使用している例を示します。ここで

Set-Alias -Name myidea -Value 'Test-FunctionIdea -SwitchIdea' 
function Test-FunctionIdea { 
    param(
    [switch]$SwitchIdea 
) 
    if($SwitchIdea) 
    { 
    Write-Host 'Good Idea' 
    } 
} 

は私が午前エラーです:

myidea : The term 'Test-FunctionIdea -SwitchIdea' 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. 
At line:1 char:1 
+ myidea 
+ ~~~~~~ 
    + CategoryInfo   : ObjectNotFound: (Test-FunctionIdea -SwitchIdea:String) [], CommandNotFoundException 
    + FullyQualifiedErrorId : CommandNotFoundException 

ことが可能であるならば、私はどのように行うのお知らせください。私はこれについてインターネットを検索し、結果が出てこなかった。

+5

'function myidea {Test-FunctionIdea -SwitchIdea}'。 * "Bashでは、"ほぼすべての目的のために、シェル関数がエイリアスより優先される "ことを推奨しています... PowerShellのエイリアスは真のエイリアスです。コマンド、スクリプト、関数などであり、パラメータの受け渡しやミニスクリプトの作成はサポートしていません。」* - https://web.archive.org/web/20120213013609/http://huddledmasses.org/ powershell-power-user-tips-bash-style-alias-command – TessellatingHeckler

+0

私はそれを二番目に:) – 4c74356b41

+0

@TessellatingHecklerありがとう!魅力のように働く、あなたは正しいクレジットを与えることができるように質問に答えたいですか? –

答えて

3

あなたは$MyInvocation.InvocationNameをチェックして、関数内のパラメータを調整することができます。

function Some-Function([switch] $foo) { 
    if ($MyInvocation.InvocationName -eq 'foo') { $foo = $true } 
} 

Set-Alias foo Some-Function 

[通常無視できる]の利点は、新しい関数スコープのための追加の実行コンテキストを作成していないということです。

+2

私は決してプロダクションコードで使用することはありませんが、興味深いアプローチで+1します! – briantist

関連する問題