探索PowerShell(十一)函数介绍

所属分类: 脚本专栏 / PowerShell 阅读数: 1568
收藏 0 赞 0 分享
一个脚本的功能可能有很多,但是并非都是通过一段代码来完成的。在一个出色的脚本中,实现各个功能代码的独立性,可以保证这个脚本具有高可用性和易维护性,并且当我们改进或删减功能时只需删除对应的代码块即可。通常,代码块就是指函数,调用函数,就是执行不同的代码块,以便实现各种功能。

先看一个例子:
复制代码 代码如下:

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 {$_.Name -eq "Windows"}
}

使用如下语句调用:

ls -path c:\ | FindWindowsFolder <enter>

运行结果:



函数的阶段处理

在函数中,还可以进一步分为下列3个处理步骤:

1. begin - 只在函数第一次开始时执行一次,适用于放置初始化函数的代码。
2. process - 每一次调用函数时都执行
3. end - 只在函数结束时执行一次

并不是所有的函数都需要这三个步骤,但是一旦选择使用这种函数表达格式,在这三个代码块之外不能再存在其他代码,并且,每个代码块只能出现一次。

一个典型的例子:
复制代码 代码如下:

function fun{
begin{
"Start"
$i=1
}
process{
"run "+$i
$_.name
$i++
}
end{
"End"
}
}
ls | fun

运行结果:
更多精彩内容其他人还在看

PowerShell入门教程之高效使用PowerShell交互式运行环境的几个小技巧

这篇文章主要介绍了PowerShell入门教程之高效使用PowerShell交互式运行环境的几个小技巧,本文也可以说是使用PowerShell的一些好习惯,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell入门教程之Cmd命令与PowerShell命令相互调用的方法

这篇文章主要介绍了PowerShell入门教程之Cmd命令与PowerShell命令相互调用的方法,本文讲解了在Cmd命令中调用PowerShell命令、在PowerShell命令中调用Cmd命令的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell入门教程之远程操作运行PowerShell的方法

这篇文章主要介绍了PowerShell入门教程之远程操作运行PowerShell的方法,本文讲解了配置远程基础结构、执行远程操作等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell入门教程之PowerShell管道介绍

这篇文章主要介绍了PowerShell入门教程之PowerShell管道介绍,本文讲解了管道的作用,并列出了几个使用实例,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell入门教程之函数、脚本、作用域介绍

这篇文章主要介绍了PowerShell入门教程之函数、脚本、作用域介绍,本文所讲内容都是PowerShell的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell入门教程之访问.Net程序集、COM和WMI实例

这篇文章主要介绍了PowerShell入门教程之访问.Net程序集、COM和WMI实例,本文讲解了PowerShell作为Windows平台的脱水语言来访问其它资源的例子,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell入门教程之创建和使用配置文件实例

这篇文章主要介绍了PowerShell入门教程之创建和使用配置文件实例,PowerShell的配置文件都是些普通的PowerShell脚本文件,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell入门教程之编写和使用脚本模块实例

这篇文章主要介绍了PowerShell入门教程之编写和使用脚本模块实例,本文讲解了模块、脚本模块、编写脚本模块、模块安装路径、模块文件夹等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

WMI入门教程之什么是WMI?

这篇文章主要介绍了WMI入门教程之什么是WMI?WMI有一组API,我们可以使用VBScript、PowerShell脚本还是利用C#的来访问WMI的类库,需要的朋友可以参考下
收藏 0 赞 0 分享

WMI入门教程之怎么使用WMI?

这篇文章主要介绍了WMI入门教程之怎么使用WMI?本文讲解了在软件中、PowerShell中、.NET中使用WMI的例子,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多