Powershellには、追加のコマンドレットをセッションにインポートするための2つの方法、Add-PsSnapInとImport-Moduleがあります。どちらを選択するかについて、ドキュメントはまったく明確ではありません。誰かこれらの違いを知っていますか?
モジュールはPowerShell V2で登場しました。ただし、V2は必要に応じてSnapinをロードできます。大きな違いは、Xcopyを使用してモジュールをデプロイできることです。何も登録する必要はありません。スナップインを展開するには、インストーラーがレジストリをハックする必要があり、昇格された特権が必要になります。モジュールをロードするには、Import-Moduleコマンドを使用するだけです。
モジュールは、モジュールマニフェストを使用して、より多くのメタデータを持つこともできます。これにより、バージョン、他のモジュールへの依存関係、モジュールを実行できるPowershellホストなど、エンドユーザーが知るのに役立つあらゆる種類の情報を指定できます。
そうは言っても、C#またはVBでバイナリモジュールを作成している場合でも、同じPSSnapin基本クラスを使用します。
詳細については、チェックアウトしてください
PS > help about_modules
V2では、モジュールは、作成したコマンドレット、プロバイダー、関数、エイリアス、およびその他のコマンドを整理するための推奨される方法です。モジュールをインストールしません。 Import-Moduleコマンドレットを使用して、PowerShellセッションにモジュールをインポートするだけです。
AFAIK、PowerShellスナップインは、v1アプローチに近いものです。 MSには、モジュールの代わりにスナップインを作成するチームがまだいくつかあります。たとえば、SharePoint 2010コマンドレット。 PowerShellスナップインは、コマンドレットとプロバイダーを実装するバイナリ(.dll)です。スナップインをインストールしてから、Add-PSSnapinコマンドレットを使用して、スナップイン内のコマンドレットをPowerShellセッションに追加する必要があります。
PSSnapinは、ファイルを置き換えるだけで再生できるモジュールと比較して、DLLを保護されたディレクトリにインストールすることでアセンブリを保護する方法を提供します。
参照: PSSnapinのMSDNリンク