PowerShell函数的基本指南与特性

系统 Windows
虽然Windows PowerShell能以多种方式给管理员带来好处,它的扩展性可能是它最重要的属性。这包括PowerShell函数,这些小且简单的任务工具由函数框内的命令组成。运用函数使得调试更简单,也通过让你可以将函数从一个脚本转向另一个来使编写的代码更少。

虽然Windows PowerShell能以多种方式给管理员带来好处,它的扩展性可能是它最重要的属性。这包括PowerShell函数,这些小且简单的任务工具由函数框内的命令组成。运用函数使得调试更简单,也通过让你可以将函数从一个脚本转向另一个来使编写的代码更少。

推荐专题:Windows中的脚本技术-Windows Powershell

那么什么时候PowerShell函数最有用呢?以下是你需要记住的三个基本指南:

  1. 如果你一再地重复相同的代码块,例如在电脑上检查多个服务的代码块。在这里,你可以运用函数来执行检查,在所有服务器上运行它,也可以更高效地检测到代码错误。
  2. 如果你在其它脚本中运用一个专用代码。例如,如果你编写一个递归解析块,你会想要再利用该逻辑。
  3. 如果该代码在脚本之外有用。这和之前的指南有些许不同,好的例子就是ping-server函数。

一般说来,编写代码时考虑再利用常常是个不错的想法,尤其是函数就有再利用的设计时。因此,除违约之外,要考虑函数怎么用、用在哪里能帮助建立它们本该有的参数,这一点很重要。

考虑再利用时,最好是尽最大可能地考虑周全并避免硬编码。此外,编写函数时所有数据都应该通过参数。虽然为参数使用缺省值也说得通,你应该让函数调用者无须修改函数就能指定其它选项。这也是黑箱测试迟早有用的地方,它可以在不同的环境中确定一条函数的可用性。就这一点而言,考虑原始函数的所有变更以及这些变更如何影响脚本整体很重要。举例来说,在PowerShell V1中,我常常试着用我自己的转换器执行verbose和whatif命令。在V2中,这个问题已经解决了。

设计函数时你还应该考虑回环和处理逻辑。例如,如果你有处理服务器的逻辑,那么你应该在函数外部维持该逻辑。没有必要为所有函数调用执行它。另一方面,如果你拥有的逻辑明显是函数域,那么你不需要移除它,只要应用调用脚本就行了。

优秀PowerShell函数的特性是什么?

好的函数都是为特定需求而生然后被弃用,但是所有的好函数都有一些共性。以下是其中的一些特性:

优秀PowerShell函数特性一:定义良好的参数

一条函数需要非常清楚它预期要返回什么数据。你可以通过应用指定参数来完成该过程。如果你显然有指定值要处理,那么确保它在函数中清晰。完成此过程的一个好方法是通过向要求的$ThisParam分配参数的缺省值。

优秀PowerShell函数特性二:一致性和预期输出

你不用猜测函数中会有什么数据,这一点很关键,你宁愿返回的数据是预期的。设计函数所说它返回一种或多种简单数据类型,如线型、日期时间型或布尔运算(Boolean)。但注意,不要用编写输出编写的意外数据或变量中没有抓取的数据污染了这个数据流。

优秀PowerShell函数特性三:独立性

该函数不应该依赖于来自脚本的任何变量。如果这条函数需要从外部输出,把它变成一个参数。

优秀PowerShell函数特性四:可移植性

一条函数最简单重要的职能就是可移植性。如果你没有计划要再利用该代码,你也可以编写内联的代码。可移植性的关键因素是确保你的可变名称不会与调用函数冲突。就这一点而言,你可以用$my或$func给它们做序。

【编辑推荐】

  1. 利用PowerShell缩短SharePoint备份时间
  2. PowerShell与.NET框架之间的点连接
  3. WMI中的Windows PowerShell脚本使用方法
  4. 有关PowerShell脚本你必须知道的十个基本概念
  5. PowerShell与Unix Shell对比:八大实例
责任编辑:张浩 来源: TT中国
相关推荐

2021-02-03 09:00:00

AIOps数字化运营IT

2010-11-08 14:47:02

Powershell函数

2013-02-21 17:54:12

PowerShell入PowerShell命

2010-02-04 17:16:33

C++调用python

2010-08-06 11:20:10

路由信息协议RIP

2013-02-18 08:34:45

powershell

2010-09-17 09:24:30

PowerShellSSH

2011-02-15 14:30:24

PowerShell.NET框架

2011-06-17 15:38:15

Cocoa苹果

2013-11-07 15:55:29

PowerShellVDI

2010-09-03 10:24:01

CSSmargin

2021-07-22 06:08:43

SQL.js关系数据库数据库

2010-04-15 11:02:30

Firefox 4.0

2024-02-29 16:40:38

2010-09-15 17:05:33

CSS display

2014-06-06 13:59:52

服务器管理员PowerShell

2013-01-16 08:56:53

iOS故障排除指南

2010-03-16 11:20:53

Linux 优化

2009-02-27 13:07:00

服务器解析基本特性

2019-05-07 15:19:28

医疗保健云计算远程医疗
点赞
收藏

51CTO技术栈公众号