Powershell 增强脚本的可读性 6


如果你愿意,你可以把一个脚本写的非常长,问题是脚本的代码量越大,可读性越差。最好的方式在写脚本时融入函数和类库的概念:
函数:把实现一些小功能的代码写成一个函数,不仅可以增强代码的可读性,还可以很方便的重用。一旦你创建了一个实现特定功能的函数,也可以下次在其它脚本中使用。
类库:把需要的函数嵌入进类库中,就不用每次在执行脚本时拷贝函数,并且还可以在需要时扩充它。另外以函数的方式构建类库,还可以让你更专注特定功能的具体实现,降低脚本开发的复杂度。

在脚本中使用函数

要在脚本中使用函数,最简单的方法自然是将函数直接写在脚本中:
在MyScript.ps1中输入:

param([int]$n=$(throw "请输入一个正整数"))
Factorial $n
Function Factorial([int]$n)
{
    $total=1
    for($i=1;$i -le $n;$i++)
    {
        $total*=$i
    }
    return $total
}

这个脚本接收一个正整数参数,然后通过Factorial函数求阶乘。

PS E:> .MyScript.ps1
请输入一个正整数
所在位置 E:MyScript.ps1:1 字符: 22
+ param([int]$n=$(throw < <<<  "请输入一个正整数"))     + CategoryInfo          : OperationStopped: (请输入一个正整数:String) [], RuntimeException     + FullyQualifiedErrorId : 请输入一个正整数 PS E:> .MyScript.ps1 100
无法将“Factorial”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路
径,请确保路径正确,然后重试。
所在位置 E:MyScript.ps1:2 字符: 10
+ Factorial < <<<  $n
    + CategoryInfo          : ObjectNotFound: (Factorial:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

不像其它脚本语言,Powershell中的函数必须先定义后使用。
所以更改脚本为:

param([int]$n=$(throw "请输入一个正整数"))
Function Factorial([int]$n)
{
    $total=1
    for($i=1;$i -le $n;$i++)
    {
        $total*=$i
    }
    return $total
}
Factorial $n
执行脚本:
PS E:> .MyScript.ps1 10
3628800

将脚本分为工作脚本和类库

真正的脚本开发需要处理的问题可能包含许多函数。如果在一个脚本的开头定义许多函数,脚本会显得很凌乱。把函数和工作脚本分开,可以隔离函数,使它不容易被修改。

将Factorial函数保存在PSLib.ps1

Function Factorial([int]$n)
{
    $total=1
    for($i=1;$i -le $n;$i++)
    {
        $total*=$i
    }
    return $total
}

将脚本修改为:

param([int]$n=$(throw "请输入一个正整数"))
. .PSLib.ps1
Factorial $n

执行脚本:

PS E:> .MyScript.ps1 10
3628800

脚本在执行时,先加载类库中的函数。加载函数类库和执行脚本类似,只需要在前面增加一个句号,中间有空格。

类库脚本集中存放

在开始使用类库脚本工作之前,最好先制定出一个存储脚本类库的策略。一种方法是和工作脚本存放在一起,可以使用相对路径;另一种方法是分开存放,加载时就得使用绝对路径了。最好在当前用户的私人目录中存放脚本,相对来说比较安全。
例如下面的例子:

PS E:> md $env:appdataPSLib

    目录: C:UsersbaozhenAppDataRoaming

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         2012/4/30     22:47            PSLib

PS E:> copy .PSLib.ps1 $env:APPDATAPSLib
本文链接: https://www.pstips.net/powershell-making-scripts-understandable.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

回复 Jacob 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

6 条评论 “Powershell 增强脚本的可读性