主页 > 知识库 > PowerShell函数实现类似重载功能实例

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

热门标签:腾讯地图标注中心怎么标注 六寸地图标注点怎么删除 如何根据经纬度百度地图标注 万全县地图标注app 地图标注的图案 新郑电销机器人一个月多少钱 电话机器人公司招聘 莫拉克电梯系统外呼怎么设置 印台区呼叫中心外呼系统

本文介绍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函数实现类似重载功能实例的相关信息资讯供网民参考!
  • 推荐文章