2012-10-31 42 views
2

我有一個網絡上有幾臺計算機,我想將所有PowerShell模塊放入網絡共享中,以便我可以從任何計算機輕鬆訪問它們。這適用於腳本模塊,但是二進制模塊似乎不起作用。從網絡位置導入PowerShell二進制模塊

Import-Module語句可以正確無誤地執行,但是當您使用Get-Module時,它將顯示新導入的二進制模塊不會導出任何Cmdlet。如果我將模塊複製到我的計算機上的本地目錄,它將按預期工作。

有沒有辦法從網絡位置導入二進制模塊?

回答

0

我發現加載PowerShell模塊的最簡單方法是將配置文件添加到$PSHOME目錄。

我在$PSHOME\powershell.exe.config創建一個文本文件,把下面的文件中:

<?xml version="1.0"?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0.30319"/> 
     <supportedRuntime version="v2.0.50727"/> 
    </startup> 
    <runtime> 
     <loadFromRemoteSources enabled="true"/> 
    </runtime> 
</configuration> 

這做了兩兩件事:

  1. 用途supportedRuntime,以保證PowerShell在.NET 4.0,而不是運行.NET 3.5。這很重要,因爲.NET 4具有更易於理解和配置的不同安全策略。
  2. 使用loadFromRemoteSources(僅適用於.NET 4+)啓用從遠程位置(如網絡文件共享)加載DLL。
5

對不起,我知道這個問題很舊,但認爲爲PowerShell v3提供答案會很有用。我在PowerShell v3中遇到了同樣的問題,使用Phil的答案能夠解決它 - 只需稍作修改即可。

PowerShell v3已經使用.NET 4.0,所以實際上我只需要loadFromRemoteSources部分。所以我的$PSHOME\powershell.exe.config看起來像這樣:

<?xml version="1.0"?> 
<configuration> 
    <runtime> 
     <loadFromRemoteSources enabled="true"/> 
    </runtime> 
</configuration> 

簡單!感謝菲爾的指點,會upvote你的答案,但我沒有聲望呢。