当前位置: 首页 > 编程笔记 >

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

上官兴昌
2023-03-14
本文向大家介绍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函数支持重载吗,本文就介绍这么多,希望对您有所帮助,谢谢!

 类似资料:
  • 本文向大家介绍Android实现类似3D Touch菜单功能,包括了Android实现类似3D Touch菜单功能的使用技巧和注意事项,需要的朋友参考一下 前言 在开发中,我们经常遇到需要菜单功能的实现,我们经常会参考其他人的优秀设计。比如3D Touch菜单,作为iphone6和iphone6s上引人注目的新功能。现在,我们希望尽力来模仿这种菜单设计,尽力,因为系统的差异,会导致很多东西实现起来

  • 本文向大家介绍ajax实现加载数据功能,包括了ajax实现加载数据功能的使用技巧和注意事项,需要的朋友参考一下 加载数据的具体代码,供大家参考,具体内容如下 1.xssj.php 2.xschuli.php 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍awk中实现ord函数功能,包括了awk中实现ord函数功能的使用技巧和注意事项,需要的朋友参考一下 在awk中并未直接提供ord函数,所以在将某个字符转换为码时,需要自己来实现 这里主要是构造了ord为key,val的数据结构,key为char字符,val对应的ascii码 附:awk得到字母的ASC值实现

  • 本文向大家介绍JavaScript中使用参数个数实现重载功能,包括了JavaScript中使用参数个数实现重载功能的使用技巧和注意事项,需要的朋友参考一下 利用参数的个数实现重载,马上想到的方法就是 这种方式能实现重载,但是这样的代码比较长,实际开发中情况有时候会很多。所以我们可以用下面的方法。 这个技巧利用的是闭包,在闭包里作为引用进行存储的不同参数的情况。 实际调用addMethod函数的情况

  • 本文向大家介绍layui数据表格实现重载数据表格功能(搜索功能),包括了layui数据表格实现重载数据表格功能(搜索功能)的使用技巧和注意事项,需要的朋友参考一下 layui数据表格实现重载数据表格功能,以搜索功能为例 加载数据表格 实现搜索功能和数据表格重载 全部代码 加载数据表格 按照layui官方文档示例 HTML部分 JavaScript部分 官方的文档已经把方法说的很明白了,下面展示实例

  • 本文向大家介绍SQLite 实现if not exist 类似功能的操作,包括了SQLite 实现if not exist 类似功能的操作的使用技巧和注意事项,需要的朋友参考一下 需要实现: 只能用: 因为 SQLite 中不支持SP 补充:sqlite3中NOT IN 不好用的问题 在用sqlite3熟悉SQL的时候遇到了一个百思不得其解的问题,也没有在google上找到答案。虽然最后用“迂回”