问题: 是否可以设置一个同时调用函数和开关的别名?
这是我正在使用的一个例子。
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
如果有可能请告诉我它是如何完成的。我在互联网上搜索了这个并没有得到任何结果。
答案 0 :(得分:3)
您可以查看$MyInvocation.InvocationName
并调整功能内的参数:
function Some-Function([switch] $foo) {
if ($MyInvocation.InvocationName -eq 'foo') { $foo = $true }
}
Set-Alias foo Some-Function
[通常可以忽略不计]的优点是它不会为新的函数范围创建额外的执行上下文。