从网络位置导入PowerShell二进制模块

时间:2012-10-31 16:52:59

标签: networking powershell module

我的网络上有几台计算机,我想将所有PowerShell模块放在网络共享中,这样我就可以从任何计算机轻松访问它们。这适用于脚本模块,但二进制模块似乎不起作用。

Import-Module语句可以正常执行而不会出现错误,但是当您使用Get-Module时,它将显示新导入的二进制模块未导出任何Cmdlet。如果我将模块复制到计算机上的本地目录中,则一切都按预期工作。

有没有办法从网络位置导入二进制模块?

2 个答案:

答案 0 :(得分: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>

简单!感谢Phil提供的指示,请回复你的答案,但我还没有声誉。

答案 1 :(得分: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。