探索PowerShell(十一)函数介绍
通常,代码块就是指函数,调用函数,就是执行不同的代码块,以便实现各种功能 一个脚本的功能可能有很多,但是并非都是通过一段代码来完成的。在一个出色的脚本中,实现各个功能代码的独立性,可以保证这个脚本具有高可用性和易维护性,并且当我们改进或删减功能时只需删除对应的代码块即可。通常,代码块就是指函数,调用函数,就是执行不同的代码块,以便实现各种功能。 先看一个例子: 复制代码 代码如下: function Time {Get-Date} <enter> 这样,我们就有了一个新函数"Time",其功能实现代码就是"{Get-Date}"。 尝试调用它: 与编程语言一样,自定义函数同样可以声明参数: function(关键字) 函数名 (参数) {代码} 例如: 复制代码 代码如下: function add ($x,$y) { $n = $x + $y “$x+$y=$n” } 运行结果: 在上例这个add函数中,如果参数为空,则不会产生运算。并且,在上例中的变量$n仅对函数内部有效,在函数之外,是不存在此变量的,也就是说,$n是一个局部变量。 上面的代码还可以用另一种方法来实现: 复制代码 代码如下: function add { param ($x,$y) $n = $x + $y “$x+$y=$n” } 其中,"param"的作用是声明参数。 大多数函数对于参数的数据类型都是有要求的,例如上列示例,如果要求函数实现运算功能,则要求参数使用数字类型,如果要求的功能是字符串相加,则要求为字符类型。这就要求在编写函数时,声明参数的同时声明其数据类型,最好也赋予其默认值,这样在调用时才不会发生错误,其实很多错误可能已经发生但是我们却看不到,因为不一定所有的函数都有输出,可能只是将结果进行传递,这样,将会给排错带来很大困难。 例: 复制代码 代码如下: function add { param ([int]$x=0,[int]$y=0) $n = $x + $y "$x+$y=$n" } 那么,通过前面教程的内容,可以知道,很多功能的实现并不是通过简单的参数传递,而是使用了管道符"|",那么,如何让我们的函数也支持管道符功能呢? 只需在函数中需要接受数据的地方使用"$input"变量即可。如下例所示: 复制代码 代码如下: function FindWindowsFolder { $input | where-object {
Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved 地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008 电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134 《中华人民共和国增值电信业务经营许可证》闽B2-20100024 ICP备案:闽ICP备05037997号
} 使用如下语句调用: ls -path c:\ | FindWindowsFolder <enter> 运行结果: 函数的阶段处理 在函数中,还可以进一步分为下列3个处理步骤: 1. begin - 只在函数第一次开始时执行一次,适用于放置初始化函数的代码。 2. process - 每一次调用函数时都执行 3. end - 只在函数结束时执行一次 并不是所有的函数都需要这三个步骤,但是一旦选择使用这种函数表达格式,在这三个代码块之外不能再存在其他代码,并且,每个代码块只能出现一次。 一个典型的例子: 复制代码 代码如下: function fun{ begin{ "Start" $i=1 } process{ "run "+$i
Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved 地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008 电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134 《中华人民共和国增值电信业务经营许可证》闽B2-20100024 ICP备案:闽ICP备05037997号
$i++ } end{ "End" } } ls | fun 运行结果: |
||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |