当前位置: 首页 > 编程笔记 >

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

朱鸿畅
2023-03-14
本文向大家介绍PowerShell入门教程之编写和使用脚本模块实例,包括了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程序员为数不多的展示工作成果的方式之一,而且是其中最专业化的方式。所以,玩儿转模块,秀给所有人看。

 类似资料:
  • 本文向大家介绍PowerShell入门教程之函数、脚本、作用域介绍,包括了PowerShell入门教程之函数、脚本、作用域介绍的使用技巧和注意事项,需要的朋友参考一下 脚本所体现的是PowerShell的编程特性,是任务自动化的基础。函数是比脚本粒度更细的代码复用单元,可以定义在命令行中或者脚本中。作用域就是变量和函数的作用范围,是执行上下文的划分。 函数   函数就是命名的命令列表,与一般编程语

  • 本文向大家介绍PowerShell入门教程之PowerShell有什么用?,包括了PowerShell入门教程之PowerShell有什么用?的使用技巧和注意事项,需要的朋友参考一下 PowerShell能干什么呢?就像序言中提到的那样,PowerShell首先是个Shell,定义好了一堆命令与操作系统,特别是与文件系统交互,能够启动应用程序,甚至操纵应用程序;第二,PowerShell允许将几个

  • 本文向大家介绍PowerShell入门教程之创建和使用配置文件实例,包括了PowerShell入门教程之创建和使用配置文件实例的使用技巧和注意事项,需要的朋友参考一下 在命令行中定义别名、变量和函数,只是将它们添加在当前PowerShell的会话中。退出会话后,这些更改就会丢失。想要在以后的会话中也能使用它们,就要将它们定义在配置文件中。 配置文件   PowerShell的配置文件,不像Wind

  • 本文向大家介绍PowerShell入门教程之PowerShell管道介绍,包括了PowerShell入门教程之PowerShell管道介绍的使用技巧和注意事项,需要的朋友参考一下 管道对于Shell来说是个化腐朽为神奇的东西,它极大地提高了在命令行上编程的能力。深入理解并熟练使用管道是PowerShell高手之路的必经阶段。没有管道,我们就不得不通过许多的变量来保存中间结果,虽然这是脚本和其他编译

  • 本文向大家介绍node.js入门教程之querystring模块的使用方法,包括了node.js入门教程之querystring模块的使用方法的使用技巧和注意事项,需要的朋友参考一下 querystring模块 querystring从字面上的意思就是查询字符串,一般是对http请求所带的数据进行解析。querystring模块只提供4个方法,在我看来,这4个方法是相对应的。 这4个方法分别是qu

  • 本文向大家介绍PowerShell入门教程之访问.Net程序集、COM和WMI实例,包括了PowerShell入门教程之访问.Net程序集、COM和WMI实例的使用技巧和注意事项,需要的朋友参考一下 PowerShell可以设计的大而全,重新实现一切;也可以像现在一样设计成胶水语言,利用现有的资源。特别是,与.Net、COM和WMI三大豪门的联姻,使得PowerShell必将在Windows世界里