我相信这是可能的,但找不到任何有用的东西。 我写了一个局域网扫描程序脚本。为了尽可能地自动化,我不依赖于用户的任何输入。该脚本检查本地接口IP地址,并使用缩进网络工具模块计算每个IP地址和ping的数量。
问题是因为我使用的是第三方工具,我必须在任何我想要使用此脚本的机器上安装它。有没有办法可以将这个第三方模块包含在我的脚本中,比如将它们放在同一个文件夹中而不必单独安装?
答案 0 :(得分:3)
这实际上取决于您希望如何将模块部署到其他计算机。如果要在网络共享上共享或分发zip包,则可以将这些依赖项与模块一起包含在内。只需将Indented.Common
和Indented.NetworkTools
放在一个带有脚本定义的目录中,如下所示:
MyModule/
└╴MyModule.psm1
└╴Indented.Common/
└╴IndentedNetworkTools/
然后,您可以直接从MyModule.psm1
加载这些模块(不将它们安装到全局模块路径):
import-module $psscriptroot\Indented.Common\Indented.Common.psm1
import-module $psscriptroot\Indented.NetworkTools\Indented.NetworkTools.psm1
就是这样。如果你有一个普通的 .ps1 ,而不是 .psm1 模块,这也会有效。
也许更优雅的方式是使用WMF5 PackageManagement。在Indented.NetworkTools
中声明MyModule.psd1
作为依赖项(NestedModules),然后publish it on PSGallery。然后,您可以在其他计算机上说Install-Module MyModule
- 这将安装MyModule
及其依赖项。
这种方法的问题是,PowershellGallery(Indented.*
模块不是)也可以使用任何声明的依赖项。