2

複数のコンピューターが接続されているネットワークがあり、すべてのPowerShellモジュールをネットワーク共有に入れて、どのコンピューターからでも簡単にアクセスできるようにしたいと考えています。これはスクリプトモジュールでは機能しますが、バイナリモジュールは機能しないようです。

Import-Moduleステートメントはエラーなしで問題なく実行できますが、を使用するとGet-Module、新しくインポートされたバイナリモジュールがコマンドレットをエクスポートしていないことが示されます。モジュールをコンピューターのローカルディレクトリにコピーすると、すべて期待どおりに機能します。

ネットワーク上の場所からバイナリモジュールをインポートする方法はありますか?

4

2 に答える 2

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>

単純!指摘してくれたフィルに感謝します。あなたの答えに賛成票を投じますが、私はまだ評判がありません。

于 2013-10-09T20:35:36.827 に答える
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>

これにより、次の 2 つのことが行われます。

  1. supportedRuntimeを使用して、PowerShell が .NET 3.5 ではなく .NET 4.0 で実行されるようにします。.NET 4 には、理解しやすく構成しやすいさまざまなセキュリティ ポリシーがあるため、これは重要です。
  2. loadFromRemoteSources (.NET 4+ でのみ使用可能) を使用して、ネットワーク ファイル共有などのリモートの場所から DLL をロードできるようにします。
于 2012-11-26T20:08:33.307 に答える