手机
当前位置:查字典教程网 >脚本专栏 >PowerShell >PowerShell函数实现类似重载功能实例
PowerShell函数实现类似重载功能实例
摘要:本文介绍PowerShell自定义函数是否支持重载,如果支持,如何重载?如果不支持,如何实现与重载相似的效果?郑重声明:PowerShell...

本文介绍PowerShell自定义函数是否支持重载,如果支持,如何重载?如果不支持,如何实现与重载相似的效果?

郑重声明:PowerShell自定义函数不支持重载!也就是说,你不能定义两个同名的PowerShell函数,不管参数个数、顺序、类型是否相同。既然PowerShell自定义函数不支持重载功能,那么有没有什么办法来实现与重载相似的效果呢?有,当然有,那就是参数集(Parameters Set)

PowerShell自定义函数的参数集是可以为一个函数定义一个参数集,在调用函数时可以从参数集中选择一个参数进行使用。注意,只能从参数集中选择一个来使用。先看看这个示例,对参数集好有一个感性的认识。

复制代码 代码如下:

function Add-User

{

[CmdletBinding(DefaultParameterSetName='A')]

param

(

[Parameter(ParameterSetName='A',Mandatory=$true)]

$Name,

[Parameter(ParameterSetName='B',Mandatory=$true)]

$SAMAccountName,

[Parameter(ParameterSetName='C',Mandatory=$true)]

$DN

)

$chosen = $PSCmdlet.ParameterSetName

“You have chosen $chosen parameter set.”

}

上面Add-User函数定义了一个参数集,参数集中有三个参数:Name、SAMAccountName、DN,可以选择其中任何一个使用。但Add-User函数只能传一个参数。

复制代码 代码如下:PS> Add-User -Name test

You have chosen A parameter set.

PS> Add-User -SAMAccountName test

You have chosen B parameter set.

PS> Add-User -DN test

You have chosen C parameter set.

PS> Add-User -DN test -Name test

Add-User : Parameter set cannot be resolved using the specified named parameters.

洪哥再举个例子,我们要做一个函数,想通过新闻ID或新闻标题来输出新闻的内容。那么应该怎么实现呢?

复制代码 代码如下:

function Get-NewsContent

{

[CmdletBinding(DefaultParameterSetName='A')]

[Parameter(ParameterSetName='A',Mandatory=$true)]

$NewsID,

[Parameter(ParameterSetName='B',Mandatory=$true)]

$NewsTitle

$chosen = $PSCmdlet.ParameterSetName

If($chosen -eq "A"){

"News Content by NewsID"

}else{

"News Content by NewsTitle"

}

}

关于PowerShell函数支持重载吗,本文就介绍这么多,希望对您有所帮助,谢谢!

【PowerShell函数实现类似重载功能实例】相关文章:

PowerShell函数一次返回多个返回值示例

PowerShell函数中把参数传入另一个函数的函数传参例子

PowerShell脚本trap语句捕获异常写法实例

PowerShell函数中接收管道参数实例

探索PowerShell(十一)函数介绍

Windows PowerShell是啥?看完本文你就懂它了

PowerShell中使用return语句退出函数例子

PowerShell DSC组件 xExchange 发布

揭秘PowerShell 5.0新特性和新功能

Python中调用PowerShell、远程执行bat文件实例

精品推荐
分类导航