PowerShell函数简明教程_PowerShell

PowerShell函数跟其它的编程语言的函数差不多,主要涉及输入参数、处理、输出参数、返回值、如何调用等方面的内容,下面逐一介绍。

1、PowerShell函数定义

定义函数使用function关键字,使用自定义的标识符作为函数名,使用一对大括号括起函数体。如下:

复制代码 代码如下:

function <函数名>{
   <函数体>;
}

举例:

复制代码 代码如下:

function Test-Fun{
   $args0 = $args[0]
   $args1 = $args[1]
   Write-Host "p1=$args[0], p2=$args[1]"
   Write-Host "p1=$args0, p2=$args1"
}

在做这个例子的时候,洪哥遇到了很悲推的一幕。感觉完全相同的两种输出方式,结果是截然不同。洪哥只能说,双引号中的$args变量,居然不管后面的中括号和下标,真TMD的太诡异了,慎用!真相如下:

复制代码 代码如下:

PS > function Test-Fun{
>>     $args0 = $args[0]
>>     $args1 = $args[1]
>>     $msg = "p1=$args[0], p2=$args[1]"
>>     Write-Host "p1=$args[0], p2=$args[1]"
>>     Write-Host $msg
>>     Write-Host "p1=$args0, p2=$args1"
>> }
>>
PS > test-fun 111 222
p1=111 222[0], p2=111 222[1]
p1=111 222[0], p2=111 222[1]
p1=111, p2=222

2、PowerShell函数输入参数

在函数体中,使用Param()方法来定义函数的输入参数,如下:

复制代码 代码如下:

function <函数名>{
   Param($p1,$p2,...);
   <函数体>;
}

关于PowerShell函数输入参数的更多详细介绍,比如“位置参数”、“名称参数”、“参数属性”等,请移步“PowerShell教程之PowerShell函数输入参数”。

3、PowerShell函数返回值

PowerShell会把所有函数体中的输出打包成一个System.Array对象当作返回值。虽然PowerShell也支持return语句,但是洪哥前面讲的这句话仍然有效。所以,这个return就是摆设。

4、PowerShell函数调用

函数的调用很简单,跟VB调用函数的方式差不多。如下:

复制代码 代码如下:

<函数名> [[-参数名1] 参数值1[, [-参数名2] 参数值2], ...]
举例:
Test-Fun "参数值"
Test-Fun "参数值1", "参数值2", "参数值3"
Test-Fun -p1 "参数值1" -p2 "参数值2"

时间: 2024-09-25 09:39:24

PowerShell函数简明教程_PowerShell的相关文章

PowerShell替换字符串操作符replace简明教程_PowerShell

PowerShell对字符串的处理,具有非常强大的功能,强于任何一门脚本语言.我们今天来看看替换字符串操作. 如果我想把字符串"abcd"中的"a"替换为"x",代码如下: 命令: 复制代码 代码如下: PS >"abcd" -replace "a", "x" 输出: 复制代码 代码如下: xbcd 如果我想把字符串"abcd"中的"bc"替

PowerShell 入门基础教程_PowerShell

Windows PowerShell 是专为系统管理员设计的新 Windows 命令行外壳程序.该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用. 现在win2008,win7都集成了PowerShell,系统不带PowerShell可以自行到官方下载安装即可. 下载地址:http://www.jb51.net/jiaoben/67200.html 解读: 1.什么是交互式提示? 答:交互式提示就像打开一个cmd窗口,在里面执行一个ping命令一样,它会动态的输入结果.也可以

PowerShell函数中使用$PSBoundParameters获取输入参数列表实例_PowerShell

本文介绍在自定义PowerShell函数时,有一个$PSBoundParameters的变量可以获取到输入参数列表.获取输入参入列表对我们进行功能调试有很大的帮助. 当我们在执行一个函数时,可以使用输入参数的值,但我在PowerShell中,参数有的是必选,有的是可选,那么我们怎么知道用户真实的输入了哪些参数呢? 在PowerShell函数中,有一个全局变量$PSBoundParameters,它是一个Hash表,里面保存了所有的输入参数和输入参数的值.通过输出这个变量,我们就可以看到所有的输入

PowerShell函数参数指定数据类型实例_PowerShell

本文介绍在PowerShell创建自定义函数时,为必选参数设置强类型有什么好处,应该如何设置. 为了提高必选参数的安全性,PowerShell函数定义的最佳实践告诉我们,要为必选参数设置强类型.这是为什么呢,我们来看一个例子. 复制代码 代码如下: function Test-Me {     param     (         [Parameter(Mandatory=$true, HelpMessage='Enter number of EUROs!')]         $Euro  

PowerShell函数参数用星号隐藏的方法_PowerShell

本文介绍在PowerShell中创建函数时,如何让函数的参数输入值的时候自动变成星号. 什么叫自动变成星号呢?举个例子,我们在登录一个邮箱时,输入用户时看到的是明文的,但我们在输入密码时,看到的是一个个增加的星号.在使用PowerShell自定义函数时,如何设置才能让输入密码之类的参数时,自己用星号掩盖呢?且往下看. 复制代码 代码如下: function Test-Password {     param     (     [Parameter(Mandatory=$true)]     $

PowerShell函数参数使用智能提示功能例子_PowerShell

本文介绍在自定义PowerShell函数时,如何设置函数可以智能提示参数值.参数值的智能提示这个功能是在PowerShell 3.0中出现的新功能. 在PowerShell 3.0版本中,出现了一项新的功能,那就是参数值的智能提示.当然,不是随便在哪里都会智能提示参数值,而是只能在ISE中.当然,所谓的ISE就是PowerShell自带的一个集成开发环境. 那么,我们自己在开发一个PowerShell函数时,我们应该怎么设置才能让我们的函数在ISE中也能智能提示参数的值呢?看看下面这个例子. 复

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

本文介绍PowerShell自定义函数是否支持重载,如果支持,如何重载?如果不支持,如何实现与重载相似的效果? 郑重声明:PowerShell自定义函数不支持重载!也就是说,你不能定义两个同名的PowerShell函数,不管参数个数.顺序.类型是否相同.既然PowerShell自定义函数不支持重载功能,那么有没有什么办法来实现与重载相似的效果呢?有,当然有,那就是参数集(Parameters Set) PowerShell自定义函数的参数集是可以为一个函数定义一个参数集,在调用函数时可以从参数集

PowerShell函数中的开关参数介绍和创建实例_PowerShell

本文介绍什么是开关参数,在PowerShell自定义函数中,如何创建开关参数并使用开关参数的值. 什么叫开关参数呢?举个例子,技术男一般都知道有一个网络命令叫"Ping",我们可以使用"ping www.jb51.net"这样一个命令来检查本地计算机到www.jb51.net这个网站所在的服务器网络是否连通.这个命令会从本地发送4个数据包到www.jb51.net服务器,并显示每个数据包是否收到了反馈结果.如果我正在重启www.jb51.net这台服务器,那么pin

PowerShell中的函数重载示例_PowerShell

在PowerShell中,我们可以使用Function关键字来定义一个函数,比如: Function Get-Data { Param ( [int] $data = -1 ) return $data; } 这个名为Get-Data的函数接收一个int类型的参数$data,直接将其返回.那么,我同时还需要一个接收string类型的Get-Data函数怎么办?方法比较奇怪,至少和传统的C++之类的语言不同. 在PowerShell中定义重载函数,需要指定参数所属的Parameter Set,如下