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

 更新时间:2014年07月31日 10:00:48   作者:洪哥  
这篇文章主要介绍了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操作注册表的方法,非常的简单实用,有需要的小伙伴可以参考下。
    2015-09-09
  • Windows Powershell 自定义控制台

    Windows Powershell 自定义控制台

    这篇文章主要介绍了Windows Powershell 自定义控制台,包括选项、字体、布局和颜色四个方面的自定义风格,希望对大家有所帮助
    2014-08-08
  • PowerShell多线程执行前后台作业的例子

    PowerShell多线程执行前后台作业的例子

    使用后台作业执行多个任务从先前的技巧中看不是非常高效,它在处理每个后台作业返回结果时将会浪费很多性能。一个更有效的方法是使用进程内的任务。他能分别单独的执行任务与Powershell类似,所以它不是按顺序返回值的
    2014-04-04
  • Windows Powershell Foreach 循环

    Windows Powershell Foreach 循环

    Foreach-object 为cmdlet命令,使用在管道中,对管道结果逐个处理,foreach为遍历集合的关键字。
    2014-10-10
  • Powershell互斥参数使用实例

    Powershell互斥参数使用实例

    这篇文章主要介绍了Powershell互斥参数使用实例,本文给出了两个代码示例来讲解互斥参数的使用,需要的朋友可以参考下
    2015-06-06
  • Windows Powershell 介绍和安装

    Windows Powershell 介绍和安装

    Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象。其可读性,易用性,可以位居当前所有shell之首。
    2014-08-08
  • PowerShell脚本实现添加、修改任务计划的例子

    PowerShell脚本实现添加、修改任务计划的例子

    这篇文章主要介绍了PowerShell脚本实现添加、修改任务计划的例子,PowerShell操作、设置任务计划实例,需要的朋友可以参考下
    2014-08-08
  • 探索PowerShell(十) 循环语句介绍

    探索PowerShell(十) 循环语句介绍

    本节所要讨论的内容的实质更多的偏向于程序设计方面,所以在此不做过多详细讲解,只针对PowerShell中的应用进行具体讲解
    2012-12-12
  • PowerShell脚本开发之收发UDP消息包

    PowerShell脚本开发之收发UDP消息包

    上篇文章我们介绍了使用PowerShell收发TCP消息包,今天我们来介绍下使用Powershell收发UDP小细胞的方法
    2014-10-10
  • PowerShell获取Windows用户列表、用户信息的方法

    PowerShell获取Windows用户列表、用户信息的方法

    这篇文章主要介绍了PowerShell获取Windows用户列表、用户信息的方法,一个简单的入门例子,需要的朋友可以参考下
    2014-08-08

最新评论