5

我相信这是可能的,但找不到任何有用的东西。我写了一个局域网扫描仪脚本。为了尽可能地自动化事情,我不依赖用户的任何输入。该脚本检查本地接口 IP 地址并使用缩进网络工具模块来计算可能的 IP 地址数量和每个 ping。

问题是因为我使用的是第三方工具,所以我必须将它安装在我想使用这个脚本的任何机器上。有没有办法可以将这个第三方模块包含在我的脚本中,比如将它们放在同一个文件夹中而不必单独安装?

4

1 回答 1

7

这实际上取决于您希望如何将模块部署到其他机器。如果您想在网络共享上共享它或分发一个 zip 包,那么您可以将这些依赖项与您的模块一起包含。只需将Indented.CommonIndented.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为依赖项(NestedModules)MyModule.psd1,然后在 PSGallery 上发布。然后,您可以Install-Module MyModule在其他机器上说 - 这将安装MyModule它的依赖项。

这种方法的问题是任何声明的依赖项都必须在 PowershellGallery 上可用(哪些Indented.*模块不可用)。

于 2016-09-16T03:53:26.083 回答