[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创教程] PowerShell 模块开发流程

本帖最后由 victorwoo 于 2014-7-21 17:18 编辑

原始链接:PowerShell 模块开发流程
发表日期:2014-07-17


我们希望使用 ISE 编辑器开发 PowerShell 的 .psm1 模块时,能够享受和开发 .ps1 脚本一样的体验:

- 能够在 ISE 中按 `F5` 键运行并观察执行效果。
- 能够在 ISE 中设置断点并进行调试。
- 编辑脚本并保存后,能够使修改处即时生效。

如果直接用 ISE 打开 .psm1 模块文件,是无法直接运行的。我和史瑞克朋友探讨了这个问题,现将他的经验整理如下:

- 先直接以 .ps1 的方式开发和调试(将模块代码和测试代码写在同一个 .ps1 文件中)。
    + 注意在这种方式下,`Export-Member` 是不能用的,可以暂时注释掉。
    + 基本开发、调试完以后,将 .ps1 后缀改为 .psm1,并取消 `Export-Member` 的注释。
- 同时打开 .psm1 和 .ps1(前者是可复用的模块,后者是最终的应用脚本),即可在 .psm1 中设置断点进行调试。

请注意,如果将模块文件放在 `%PSModulePath%` 目录下,宿主只会在启动时自动加载一次模块的内容。如果在宿主启动之后编辑了 .psm1 文件,那么已经启动的宿主是不会感知到的,仍然执行的是旧的模块文件代码。

如果要让 .psm1 中的更改即时生效,需要在 .ps1 脚本的头部加上这段代码,显式加载模块:
  1. if (gmo Test-Module) { rmo Test-Module }
  2. ipmo Test-Module
  3. Test-Module # 实际的业务
复制代码
这样,每次重新运行 .ps1 脚本时,都会重新加载新的 .psm1 文件。待调试完之后,可以把头两行注释掉。
PowerShell 群:271143343

返回列表