仅对函数中的参数使用别名

时间:2014-09-09 15:05:27

标签: function powershell powershell-v3.0 powershell-v4.0

只有在调用cmdlet函数时才能使用别名?

这是我的代码

Function Deploy-Citrix {
[cmdletBinding(SupportsShouldProcess=$True)]
Param(

 [Parameter(Mandatory=$true)]
 [Alias("component")]
 [ValidateNotNullOrEmpty()]
        [string]$componentparam,

 [Parameter(Mandatory=$true)]
 [Alias("ip")]
 [ValidateNotNullOrEmpty()]
        [string]$ipaddressparam,
        )

在这种情况下,对于第二个参数,例如,我可以使用别名-ip,但我也可以使用-ipaddressparam

Deploy-citrix -componentparam "toto" -ipaddressparam "172.22.0.100"
Deploy-citrix -component "toto" -ip "172.22.0.100"

我可以使用两者,但我想禁用第一个,我想只有别名。

我知道我可以重命名我的变量,但我不想在整个脚本中触摸它们。

我如何实现这一目标?

我正在使用Powershell V4.0

由于

1 个答案:

答案 0 :(得分:3)

如果你的目标是禁止长格式,你别无选择,只能重命名参数并删除别名。

为了尽量减少对脚本的更改,您可以在函数内创建一个变量,例如

Function Deploy-Citrix {
    [cmdletBinding(SupportsShouldProcess=$True)]
    Param(
        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$ip)

    $ipaddressparam = $ip
    ...