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



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

Import-Module语句可以很好地执行,而无需错误,但是当您使用Get-Module时,它将表明新导入的二进制模块不会导出任何CMDELT。如果我将模块复制到计算机上的本地目录,则所有这些都可以按预期工作。

是否有一种方法可以从网络位置导入二进制模块?

对不起,我知道这个问题是旧的,但是为PowerShell V3提供答案是有用的。我在Powershell V3中也遇到了同样的问题,使用Phil的答案可以解决 - 次要修改。

PowerShell V3已经使用.NET 4.0,因此我实际上只需要LoadFromRemotesources部分。所以我的$PSHOMEpowershell.exe.config看起来像这样:

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

简单!感谢菲尔的指示,会提高您的答案,但我还没有声誉。

我发现加载PowerShell模块的最简单方法是将配置文件添加到$PSHOME目录。

我在$PSHOMEpowershell.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,例如网络文件共享。

最新更新