PowerShell では、シェルを拡張する 2 つの方法が提供されます。バイナリのみで C# などの本格的なプログラミング言語で開発されたスナップインを使用することも、バイナリでもスクリプト ベースでも使用できるモジュールを使用することもできます。
このシリーズの以前の記事を必ずお読みください。
- PowerShell を使用して Windows を自動化する方法を学ぶ
- PowerShell でオブジェクトを使用する方法を学ぶ
- PowerShell での書式設定、フィルタリング、比較を学習する
- PowerShell でのリモート処理の使用方法を学ぶ
- PowerShell を使用してコンピューター情報を取得する
- PowerShell でのコレクションの操作
今週はシリーズの残りの部分もお楽しみに。
スナピンズ
スナピンズは昨年もそうでした。冗談はさておき、ほとんどのスクリプタは開発者ではなく、スナップインは C# などの言語でしか作成できないため、スナップインは PowerShell コミュニティであまり普及しませんでした。それにもかかわらず、Web Deploy など、スナップインを使用する製品がまだいくつかあります。シェルで使用できるスナップインを確認するには、次のコマンドを使用します。
Get-PSSnapin – 登録済み
スナップインによって追加されたコマンドを使用するには、まずスナップインをセッションにインポートする必要があります。これは次のように実行できます。
Add-PSSnapin -Name WDeploySnapin3.0
この時点で、Web 配置スナップインがインストールされていない場合は、エラーが発生します。私のようにインストールされている場合は、セッションにインポートされます。スナップインで使用できるコマンドのリストを取得するには、Get-Command コマンドレットを使用するだけです。
Get-Command – モジュール WDeploy*
注: 技術的にはこれはモジュールではありませんが、何らかの理由で Module パラメーターを使用する必要があります。
モジュール
モジュールはより新しく、前進するものです。これらは 、PowerShell を使用してスクリプト化する ことも、C# などの言語でコーディングすることもできます。ほとんどの組み込みコマンドもモジュールに編成されています。システム上のモジュールのリストを表示するには、次のコマンドを使用できます。
Get-Module –ListAvailable
製品が更新されると、それに対応する PowerShell がモジュールに移行されます。たとえば、SQL には以前はスナップインがありましたが、現在はモジュールで構成されています。
モジュールを使用するには、まずモジュールをインポートする必要があります。
インポートモジュール – 名前 SQLASCMDLETS
スナップインで使用したのと同じトリックを使用して、モジュールがシェルに追加したすべてのコマンドを表示できます。
そこで疑問が残ります。PowerShell はシステム上にどのスナップインやモジュールがあるかをどのようにして知るのでしょうか?まあ、snapins はちょっと面倒なのでインストールする必要があります。インストール プロセスの一部には、PowerShell がスナップイン情報を見つけるために参照するいくつかのレジストリ エントリの作成が含まれます。一方、モジュールは、PSModulePath 環境変数内のいずれかの場所に配置するだけで、シェルに登録できます。あるいは、モジュールへのパスを環境変数に追加することもできます。
($env:PSModulePath).Split(“;”)
これにより、変数の内容が吐き出されます。 SQL などのモジュールがインストールされている場合は、SQL モジュールの場所を含めるために変数がどのように変更されたかに注目してください。
モジュールの自動ロード
PowerShell 3 では、いくつかの名前で呼ばれる素晴らしい新機能が導入されました。どれも公式のものではありませんが、「モジュールの自動読み込み」が最も適切に説明されています。基本的に、Import-Module コマンドレットを使用してモジュールを明示的にインポートしなくても、外部モジュールに属するコマンドレットを使用できます。これを確認するには、まず次のコマンドを使用してシェルからすべてのモジュールを削除します。
モジュールの取得 |モジュールの削除
次に、次のコマンドを使用して、モジュールがロードされていないことを確認できます。
モジュールの取得
次に、コア ライブラリにないコマンドレットを使用します。 Test-Connection は良いものです。
テスト接続ローカルホスト
ロードされたモジュールを再度確認すると、実際にモジュールがロードされたことがわかります。
今日はここまでです。明日はさらにお楽しみください。





