2016-09-16 7 views
1

これは可能ですが、何も役に立たないと確信しています。 私はlanスキャナスクリプトを書いています。可能な限り物事を自動化するために、私はユーザーからの入力に頼っていません。スクリプトはローカルインターフェイスのIPアドレスをチェックし、インデントされたネットワークツールモジュールを使用して、使用可能なIPアドレスの数を計算し、それぞれにpingを実行します。PowerShellサードパーティ製のモジュールをインストールせずに使用する

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

+0

このリンクをチェックして、要件を満たしているかどうかを確認してください。http://windowsitpro.com/blog/powershell-implicit-remoting-never-install-module-again – Nkosi

+0

返信ありがとうございます。残念ながらそれは私にとってはうまくいかないでしょう。私のスクリプトは顧客の環境で実行され、ネットワーク機器などを素早く発見することができます。 – Junaid

+0

しかし、その環境内の1つの中央サーバーでそれを使用し、残りのサーバーでそれを使用するのはどうでしょうか。私はそれがハックのように思えるが、それは実行可能な回避策かもしれない。 – Nkosi

答えて

2

これは実際にモジュールを他のマシンにどのように展開するかによって異なります。ネットワーク共有上で共有したり、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を使用することです。依存関係(NestedModules)としてIndented.NetworkToolsMyModule.psd1に、次にpublish it on PSGalleryに宣言します。次に、他のマシンでInstall-Module MyModuleと言うことができます - これはMyModuleをインストールし、依存関係になります。

この方法の問題点は、宣言された依存関係をPowerShellGallery(Indented.*モジュールではありません)でも利用できることです。

+0

ありがとうございますqbikとnkosi。私はそれを理解しましたが、完全な道に入っていましたが、これはより良い方法です。もう一度ありがとう – Junaid

関連する問題