源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PowerShell函数实现类似重载功能实例

  • 时间:2021-11-30 07:23 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PowerShell函数实现类似重载功能实例
本文介绍PowerShell自定义函数是否支持重载,如果支持,如何重载?如果不支持,如何实现与重载相似的效果? 郑重声明:PowerShell自定义函数不支持重载!也就是说,你不能定义两个同名的PowerShell函数,不管参数个数、顺序、类型是否相同。既然PowerShell自定义函数不支持重载功能,那么有没有什么办法来实现与重载相似的效果呢?有,当然有,那就是参数集(Parameters Set) PowerShell自定义函数的参数集是可以为一个函数定义一个参数集,在调用函数时可以从参数集中选择一个参数进行使用。注意,只能从参数集中选择一个来使用。先看看这个示例,对参数集好有一个感性的认识。
[u]复制代码[/u] 代码如下:
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函数只能传一个参数。
[u]复制代码[/u] 代码如下:
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或新闻标题来输出新闻的内容。那么应该怎么实现呢?
[u]复制代码[/u] 代码如下:
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函数支持重载吗,本文就介绍这么多,希望对您有所帮助,谢谢!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部