【探索PowerShell 】【十一】函数

简介:

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

先看一个例子:

function Time {Get-Date} <enter> 

这样,我们就有了一个新函数"Time",其功能实现代码就是"{Get-Date}"。

尝试调用它:

与编程语言一样,自定义函数同样可以声明参数:

 function(关键字) 函数名 (参数) {代码}

例如:


 
 
  1. function add ($x,$y)  
  2. {  
  3.     $n = $x + $y  
  4.     “$x+$y=$n”  

运行结果:

在上例这个add函数中,如果参数为空,则不会产生运算。并且,在上例中的变量$n仅对函数内部有效,在函数之外,是不存在此变量的,也就是说,$n是一个局部变量。

上面的代码还可以用另一种方法来实现:


 
 
  1. function add 
  2. {  
  3. param ($x,$y)
  4.     $n = $x + $y  
  5.     “$x+$y=$n”  

其中,"param"的作用是声明参数。

大多数函数对于参数的数据类型都是有要求的,例如上列示例,如果要求函数实现运算功能,则要求参数使用数字类型,如果要求的功能是字符串相加,则要求为字符类型。这就要求在编写函数时,声明参数的同时声明其数据类型,最好也赋予其默认值,这样在调用时才不会发生错误,其实很多错误可能已经发生但是我们却看不到,因为不一定所有的函数都有输出,可能只是将结果进行传递,这样,将会给排错带来很大困难。

例:


 
 
  1. function add 
  2. {  
  3. param ([int]$x=0,[int]$y=0)
  4.     $n = $x + $y  
  5.     "$x+$y=$n"  

那么,通过前面教程的内容,可以知道,很多功能的实现并不是通过简单的参数传递,而是使用了管道符"|",那么,如何让我们的函数也支持管道符功能呢?

只需在函数中需要接受数据的地方使用"$input"变量即可。如下例所示:


 
 
  1. function FindWindowsFolder
  2. {
  3.     $input | where-object {$_.Name -eq "Windows"}  
  4. }

使用如下语句调用:

ls -path c:\ | FindWindowsFolder <enter>

运行结果:

 函数的阶段处理

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

1. begin - 只在函数第一次开始时执行一次,适用于放置初始化函数的代码。

2. process - 每一次调用函数时都执行

3. end - 只在函数结束时执行一次

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

一个典型的例子:


 
 
  1. function fun{  
  2. begin{  
  3.     "Start" 
  4.     $i=1  
  5. }  
  6.  
  7. process{  
  8.     "run "+$i
  9.     $_.name
  10. $i++
  11. }  
  12.  
  13. end{  
  14.     "End" 
  15. }  
  16. }  
  17.  
  18. ls | fun 

运行结果:

 





     本文转自melvillo 51CTO博客,原文链接:http://blog.51cto.com/marui/294775,如需转载请自行联系原作者



相关文章
|
4月前
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
|
4月前
|
存储 数据库
【Azure 应用服务】在Azure Funciton中使用Powershell脚本函数,需要存储一些变量值如何解决?
【Azure 应用服务】在Azure Funciton中使用Powershell脚本函数,需要存储一些变量值如何解决?
|
Windows
Powershell教程(1)——函数Function语法
Powershell教程(1)——函数Function语法
280 0
Powershell教程(1)——函数Function语法
|
2月前
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
77 0
|
3月前
|
Windows
Powershell 重新排列去重 Windows环境变量
【9月更文挑战第13天】本文介绍如何使用PowerShell对Windows环境变量进行重新排列和去重。首先通过`$env:`访问环境变量,接着使用`-split`命令分割路径,再利用`Select-Object -Unique`去除重复项。之后可根据需要对路径进行排序,最后将处理后的路径组合并更新环境变量。注意修改环境变量前应备份重要数据并了解潜在影响。
137 10
|
7月前
|
存储 Ubuntu Linux
windows可以安装Ubuntu,ubuntu上也可以安装Powershell
powerhsell除了可以在windows上使用外,还可以在Ubuntu上部署开发环境。下面介绍Ubuntu上安装powershell的方法。
217 0
|
Shell Linux 开发工具
windows中cmd和PowerShell批处理命令
之前在 Git 批量删除本地分支,有用到 Linux 或 MacOS 下的批处理命令,这个命令中的 grep、xargs 本身是 Shell script,在 windows 中的 cmd 和 PowerShell 中是不能用的
113 0
|
JavaScript Windows
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
下一篇
DataWorks