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

 更新时间:2014年10月14日 09:58:26   作者:Luke Zhang   我要评论

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

现在通过编写模块就可以在PowerShell命令行或者脚本中管理大型、分布式软件系统,就像Exchange Server和SharePoint Server正在做的那样。你有这样的需求吗?

模块、脚本模块

  模块是PowerShell V2中引入的概念,用以改进之前提出的“管理单元”。将管理单元也作为模块(二进制模块)处理之后,PowerShell中就包括两种模块——脚本模块和二进制模块。那么什么是模块呢?模块就是包含一些PowerShell命令、项的程序包,它以一个整体被分发共享和加载使用。

  脚本模块是在PowerShell V2中与模块一起提出的概念,它完全由PowerShell语法和环境编写,不需要切换到其他编译语言或者开发环境。脚本模块是现在编写PowerShell模块时推荐的方法,要好好学哦。

编写脚本模块

  编写脚本模块包括确定模块路径、创建模块文件夹、编写模块文件和编写Manifest文件等几个方面,都非常容易操作,具体内容如下:

模块安装路径

  理论上,模块可以放在本机的任何位置,但是如果放在Env:\PSModulePath搜索范围内,将会更加便于管理和使用。Env:\PSModulePath是与系统变量%Path%具有相同建模方式的变量,其变量值是由逗号分隔的路径组成的字符串。虽然env:PSModulePath变量中有系统预定义的两个目录,但他们可能并未创建,需要在使用的时候创建。

  可以用以下命令获得两个路径:

复制代码 代码如下:

PS C:\Users\luke> $paths = (dir Env:\PSModulePath).Value.Split(";")
PS C:\Users\luke> $paths
C:\Users\luke\Documents\WindowsPowerShell\Modules
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\

检查路径是否已经创建可以用如下命令:
复制代码 代码如下:

PS C:\Users\luke> Test-Path -Path $paths[0]
False

以上返回False,则表示路径未创建。创建路径可使用文件浏览器、Cmd命令或者PowerShell命令。这里使用PowerShell命令如下:
复制代码 代码如下:

New-Item -Path $paths[0] -ItemType directory  -Force

这样放置模块所需要的路径就创建好了,可以进行下一步了。

模块文件夹

  模块文件夹是模块的一个组成部分,要与模块具有相同的名字。模块所包含的模块文件、描述文件以及其他可能用到的脚本文件都要放在这个文件夹中。例如本文需要创建模块ModuleDemo1,可以使用上述的new-item命令或者切换到脚本路径之后使用md命令,即md ModuleDemo1。

脚本模块文件

  脚本模块文件与一般的脚本文件内容相似,只是后缀是.psm1而非.ps1,其文件名就是模块的名字。不过,一般来说模块中应该只包含函数、别名、变量等的定义,不应进行很多操作或者输出。ModuleDemo1.psm1的简单示例如下:

复制代码 代码如下:

function Greet([String] name)
{
    "Hello $name"
}

模块描述文件

  描述文件也称为Manifest文件,扩展名是.psd1,它的文件名也要与模块相同。它的内容实际上是一个Hashtable;不同的是,这个Hashtable中键的名字是系统预先定义的。脚本模块文件的作用主要是限制运行环境、设置依赖项和对脚本进行一些描述。

  创建和编辑模块描述文件可以使用任何文本编辑器,但首次使用推荐使用命令进行。创建模块描述文件的命令如下:

复制代码 代码如下:

PS C:\Users\luke\Documents\WindowsPowerShell\Modules\ModuleDemo1> New-ModuleManifest -Path .\ModuleDemo1.psd1

cmdlet New-ModuleManifest at command pipeline position 1
Supply values for the following parameters:
NestedModules[0]:
Author: Luke Zhang
CompanyName: CaiJu
Copyright:
ModuleToProcess: ModuleDemo1
Description: Demo1
TypesToProcess[0]:
FormatsToProcess[0]:
RequiredAssemblies[0]:
FileList[0]:

这样模块描述文件就创建好了,详细信息可以打开文件编辑。

使用脚本模块

  脚本模块编写好以后就可以使用了,加载使用脚本模块文件主要利用Get-Module命令和Import-Module命令。执行如下命令就能显示出我们刚刚编写的模块:

复制代码 代码如下:

PS D:\> Get-Module -ListAvailable

ModuleType Name                      ExportedCommands
---------- ----                      ----------------
Manifest   ModuleDemo1               {}
Manifest   ADRMS                     {}
Manifest   AppLocker                 {}
Manifest   BestPractices             {}
Manifest   BitsTransfer              {}
Manifest   PSDiagnostics             {}
Manifest   ServerManager             {}
Manifest   TroubleshootingPack       {}
Manifest   WebAdministration         {}

然后导入我们刚刚编写的模块:

复制代码 代码如下:

PS D:\> Import-Module -Name ModuleDemo1

导入之后,模块中定义的Geet函数就可以使用了:
复制代码 代码如下:

PS D:\> Greet "Luke"
Hello Luke

如果模块中还定义了其他别名、变量等,也都可以使用。

结语

  模块不但是大型软件脚本化管理的高效解决方案,也是共享PowerShell命令的好办法。它是PowerShell程序员为数不多的展示工作成果的方式之一,而且是其中最专业化的方式。所以,玩儿转模块,秀给所有人看。

相关文章

  • 类似rpm包管理器的Windows Installer PowerShell Module简介

    类似rpm包管理器的Windows Installer PowerShell Module简介

    前两篇文章分享了使用PowerShell安装Window程序的一些技巧。但是都是基于兼容已有命令行的调用。今天分享一个第三方组件,让你直接可以使用Cmdlet命令来查询,安装,修复Windows程序
    2014-05-05
  • PowerShell获取当前进程PID的小技巧

    PowerShell获取当前进程PID的小技巧

    这篇文章主要介绍了PowerShell获取当前进程PID的小技巧,直接使用一个全局变量$pid即可获取当前进程的PID,需要的朋友可以参考下
    2014-08-08
  • PowerShell判断某天是星期几的方法

    PowerShell判断某天是星期几的方法

    这篇文章主要介绍了PowerShell判断某天是星期几的方法,本文以判断星期天为例子,需要的朋友可以参考下
    2014-08-08
  • Windows Powershell 进行数学运算

    Windows Powershell 进行数学运算

    在Windows PowerShell中, 使用数学运算符来进行数学运算,数学运算符允许你在命令参数中计算数值. 你可以使用一个或者多个运算符进行加减乘除法, 也可以返回除法的余数(模). 包含这些计算的参数, 将计算结果作为参数值. 命令就像处理其他类型参数一样, 来处理参数值.
    2014-08-08
  • PowerShell函数用Hash表传参实例

    PowerShell函数用Hash表传参实例

    这篇文章主要介绍了PowerShell函数用Hash表传参实例,即把Hash表作为PowerShell函数参数传入例子,需要的朋友可以参考下
    2014-07-07
  • Windows Powershell 介绍和安装

    Windows Powershell 介绍和安装

    Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象。其可读性,易用性,可以位居当前所有shell之首。
    2014-08-08
  • PowerShell 4.0实现自动化设置服务器

    PowerShell 4.0实现自动化设置服务器

    PowerShell 4.0最大的变化是引入了新的Windows PowerShell期望状态配置,该机制通过集中管理执行类似功能的电脑,来控制电脑的配置方式。
    2015-09-09
  • PowerShell中删除空格、点号、减号和换行方法代码实例

    PowerShell中删除空格、点号、减号和换行方法代码实例

    这篇文章主要介绍了PowerShell中删除空格、点号、减号和换行方法代码实例,本文直接给出实例代码,需要的朋友可以参考下
    2015-05-05
  • PowerShell脚本实现检测网络内主机类型

    PowerShell脚本实现检测网络内主机类型

    这篇文章主要介绍了PowerShell脚本实现检测网络内主机类型,本文脚本基本功能可以实现判断主机操作系统类型,如果是域内的主机可以获取主机的硬件参数和性能参数,并判断是否存在网络设备,需要的朋友可以参考下
    2014-12-12
  • Windows Powershell  IF-ELSEIF-ELSE 语句

    Windows Powershell IF-ELSEIF-ELSE 语句

    作为条件判断,if语句是各大语言都在使用的,当然powershell也不例外,今天我们就来看下IF-ELSEIF-ELSE 语句
    2014-10-10

最新评论