5

これは可能だと確信していますが、役に立つものは何も見つかりません。LANスキャナースクリプトを作成しました。可能な限り自動化するために、ユーザーからの入力に依存しません。スクリプトは、ローカル インターフェイスの IP アドレスをチェックし、インデント ネットワーク ツール モジュールを使用して、可能な IP アドレスの数を計算し、それぞれに ping を実行します。

問題は、サードパーティのツールを使用しているため、このスクリプトを使用するマシンにインストールする必要があることです。このサード パーティ製モジュールをスクリプトに含めて、それらを同じフォルダーに配置し、個別にインストールする必要がない方法はありますか?

4

1 に答える 1

7

それは、モジュールを他のマシンにどのようにデプロイするかによって大きく異なります。ネットワーク共有で共有したり、zip パッケージを配布したりする場合は、これらの依存関係をモジュールと共に含めることができます。次のように、スクリプト定義を含む 1 つのディレクトリにIndented.Commonandを配置するだけです。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

以上です。これは、 .psm1モジュールではなく、通常の.ps1がある場合にも機能します。

おそらく、より洗練された方法はWMF5 PackageManagementを使用することです。Indented.NetworkToolsで依存関係 (NestedModules) として宣言しMyModule.psd1PSGallery で公開します。次に、他のマシンで言うことができますInstall-Module MyModule-これはインストールさMyModuleれ、依存関係になります。

このアプローチの問題は、宣言された依存関係が PowershellGallery でも利用できる必要があることです (Indented.*モジュールは利用できません)。

于 2016-09-16T03:53:26.083 に答える