2016-10-24 16 views
0

システムに既にモジュールがインストールされている場合、「servicefabric」と言います。スクリプトを実行している間はこのモジュールを以前のバージョンとして削除します。私は新しい最新のサービスファブリックモジュールをインポートしたいと思います。これはどうやってできるのか分かりますか?PowerShellでシステムにロードされたモジュールをアンロードします

if(Get-Module -Name "ServiceFabric") 
{ 
    Remove-Module -Name "ServiceFabric" 
} 

しかし、それはシステムインストールされたサービス・ファブリック・モジュールを取り外していない:

は、私はこれを試してみました。私は再び試みたとき

と同じモジュールは、このコマンド以下

Get-Module -ListAvailable -Name "ServiceFabric" 

からリストされてきています。だから、私はシステムにロードされたモジュールを削除したいだけです。

+0

モジュールを取り外したり、取り外したりしますか? 'Remove-Module'はモジュールをアンロードするだけです。 –

+0

モジュールをアンインストールする必要はありません。私は現在のセッションからそれを削除したいと思っていました。私は自分のコードからインポートする新しい最新のサービスファブリックモジュールを使いたいと思っていました。 – Shri

+0

'Get-Module -ListAvailable'は、実際にロードされたモジュールではなく、使用可能なモジュールをリストします。後者は、 '-ListAvailable'を持たない' Get-Module'とは異なります。 –

答えて

1

モジュールがアセンブリで定義されている場合、またはモジュールにアセンブリが含まれている場合は、モジュールをアンロードすることはできません。コマンドレット名は削除されますが、アセンブリはメモリ内に残ります。

これはPowershellの問題ではありません.Netではアセンブリのアンロードを許可していません。代わりに、アセンブリを含むAppDomainをアンロードする必要があります。

+0

アセンブリを含むAppDomainをアンロードする必要がある場合、その場合、どうすればアンロードできますか。私の仕事の後、再びAppDomainを読み込めますか? – Shri

+0

私は、AppDomainがPowershellに属しているので、AppDomainをアンロードすることができますが、そのようにしようとするとおそらく環境に影響すると考えられます。最初にモジュールをロードするのを避けることができますか? – Sean

+0

ええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええと私はクラスタに接続して、アプリケーション/アップグレード/上書きを展開する必要があるので、上に置く必要がありますだから、私はService Fabric dllの私の特定のバージョンをロードし、powershellを使って展開を続けるという、他の選択肢もありますか? – Shri

0

試しましたか? Remove-Module -Name "ServiceFabric" -Force -ErrorAction SilentlyContinue。モジュールがロードされているかどうかを確認する必要はありません。もし見つかった場合は、それを取り除くだけです。

+0

私は上記のものを試しました。私がそれを実行すると、エラーを出すことはありません。しかし、新しいモジュールをインポートする必要があり、インポートされたモジュールに基づいてコードを書いたことは実行されません。新しいモジュールをインポートしないときに、同じエラーが発生しているエラーを、最新のモジュールをインポートした後に取得しています。 PowerShellスクリプトページの上にRemove-Moduleコードを配置しました。 – Shri

関連する問題