web-dev-qa-db-ja.com

Add-PsSnapInとImport-Moduleの違いは何ですか

Powershellには、追加のコマンドレットをセッションにインポートするための2つの方法、Add-PsSnapInとImport-Moduleがあります。どちらを選択するかについて、ドキュメントはまったく明確ではありません。誰かこれらの違いを知っていますか?

35
Justin R.

モジュールはPowerShell V2で登場しました。ただし、V2は必要に応じてSnapinをロードできます。大きな違いは、Xcopyを使用してモジュールをデプロイできることです。何も登録する必要はありません。スナップインを展開するには、インストーラーがレジストリをハックする必要があり、昇格された特権が必要になります。モジュールをロードするには、Import-Moduleコマンドを使用するだけです。

モジュールは、モジュールマニフェストを使用して、より多くのメタデータを持つこともできます。これにより、バージョン、他のモジュールへの依存関係、モジュールを実行できるPowershellホストなど、エンドユーザーが知るのに役立つあらゆる種類の情報を指定できます。

そうは言っても、C#またはVBでバイナリモジュールを作成している場合でも、同じPSSnapin基本クラスを使用します。

詳細については、チェックアウトしてください

PS > help about_modules
35
Andy Schneider

V2では、モジュールは、作成したコマンドレット、プロバイダー、関数、エイリアス、およびその他のコマンドを整理するための推奨される方法です。モジュールをインストールしません。 Import-Moduleコマンドレットを使用して、PowerShellセッションにモジュールをインポートするだけです。

AFAIK、PowerShellスナップインは、v1アプローチに近いものです。 MSには、モジュールの代わりにスナップインを作成するチームがまだいくつかあります。たとえば、SharePoint 2010コマンドレット。 PowerShellスナップインは、コマンドレットとプロバイダーを実装するバイナリ(.dll)です。スナップインをインストールしてから、Add-PSSnapinコマンドレットを使用して、スナップイン内のコマンドレットをPowerShellセッションに追加する必要があります。

17
ravikanth

これは十分に文書化されていないので、私の答えを一粒の塩で見てください。 snapinmodules の開発者向けドキュメントをご覧ください。簡単に言うと、スナップインは.Netの「単なる」ものですが、モジュールにはスクリプトやアセンブリなどを含めることができます。

4
vonPryz

PSSnapinは、ファイルを置き換えるだけで再生できるモジュールと比較して、DLLを保護されたディレクトリにインストールすることでアセンブリを保護する方法を提供します。

参照: PSSnapinのMSDNリンク

1
Nikhil Doomra