上一篇已经自定义了一个对象的类型并自定义了这个对象输出的格式。

http://beanxyz.blog.51cto.com/5570417/1772977#661998

如果需要保存为模块,需要自己创建一个manifest的文件。


具体操作如下:

  1. 首先查看$env:PsmodulePath 的路径,在第一个路径下面创建一个文件夹 Systeminfo。



    wKiom1c3D4mAuSVmAACL4wbVr10297.png


  2. 把上一篇的脚本另存为systeminfo.psm1的格式。这个时候就可以用import-module来导入了。不过这个时候因为没有配置manifest文件,他的输出格式仍然是默认的pscustomobject的格式。

  3. 下一步,把之前的format.ps1xml拷贝过来,重命名为 systeminfo.format.ps1xml。

    接下来生成一个新的manifest 文件

  4. New-ModuleManifest -Path systeminfo.psd1 -Author 'Yuan Li' -CompanyName 'beanxyz' -Copyright 'Yuan 2016' -Description 'Get System Info' -formatstoProcess .\systeminfo.format.ps1xml 
    -moduleversion 1.0 -powershellversion 3.0 -RootModule .\systeminfo.psm1




   效果如下所示:

wKiom1c3DVaQJ8lSAABNCVE8a98804.png


    5. 为了测试Module自带的全局变量/别名,我在脚本的末尾增加了以下两行,给我的function创建一个别名,然后导出,如果不导出的话,默认他的全局变量和别名用户是无法看见的。

New-Alias -name gsinfo -value get-systeminfo
Export-ModuleMember -Function * -Alias *


最后结果如下所示,可以看见我的格式已经是自定义的效果了,别名也生效了

wKioL1c3DkOQ3LH1AAERoEWGQ6g795.png


如果卸载这个模块以后,可以看见定义的别名就失效了。

wKiom1c3DiiQmzg4AAETB5gQuD8187.png