2016-09-16 50 views
1

我相信這是可能的,但找不到任何有用的東西。 我已經寫了一個局域網掃描器腳本。爲了儘可能實現自動化,我不依賴用戶的任何輸入。該腳本檢查本地接口IP地址,並使用縮進網絡工具模塊計算每個IP地址的可能IP地址數和ping數。PowerShell使用第三方模塊而不安裝它

問題是因爲我正在使用第三方工具,我必須將它安裝在我想要使用此腳本的任何機器上。有沒有辦法讓我的腳本包含第三方模塊,比如把它們放在同一個文件夾中,而不必單獨安裝它?

+0

檢查此鏈接,看看它是否滿足您的要求http://windowsitpro.com/blog/powershell-implicit-remoting-never-install-module-again – Nkosi

+0

感謝您的答覆,但不幸的是,這將不適用於我。我的腳本將在客戶環境中運行,以便快速發現網絡設備等。所以我不能將他們的機器遠離我們的機器。 – Junaid

+0

但是,如何在一箇中央服務器的環境中使用它,並讓其他人使用它。我知道它看起來像一個黑客,但它可能是一個可行的解決方法。 – 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。在MyModule.psd1中聲明Indented.NetworkTools作爲依賴項(NestedModules),然後publish it on PSGallery。然後,你可以在其他機器上說Install-Module MyModule - 這將安裝MyModule和它的依賴關係。

這種方法的問題是任何聲明的依賴關係也必須在PowershellGallery上使用(Indented.*模塊沒有)。

+0

謝謝qbik和nkosi。我想通了,但我正在進入一個完整的路徑,但這似乎更好。再一次感謝你 – Junaid