我有一个包含多台计算机的网络,我想将我所有的 PowerShell 模块放在一个网络共享中,这样我就可以从任何计算机轻松访问它们。这适用于脚本模块,但是二进制模块似乎不起作用。
该Import-Module
语句可以正常执行而不会出错,但是当您使用 时Get-Module
,它将显示新导入的二进制模块没有导出任何 Cmdlet。如果我将模块复制到计算机上的本地目录中,一切都会按预期工作。
有没有办法从网络位置导入二进制模块?
我有一个包含多台计算机的网络,我想将我所有的 PowerShell 模块放在一个网络共享中,这样我就可以从任何计算机轻松访问它们。这适用于脚本模块,但是二进制模块似乎不起作用。
该Import-Module
语句可以正常执行而不会出错,但是当您使用 时Get-Module
,它将显示新导入的二进制模块没有导出任何 Cmdlet。如果我将模块复制到计算机上的本地目录中,一切都会按预期工作。
有没有办法从网络位置导入二进制模块?
抱歉,我知道这个问题很老,但认为为 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>
简单的!感谢菲尔的指点,会赞成你的回答,但我还没有声誉。
我发现加载 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>
这做了两件事: