ホームページ » の仕方 » オタク学校はPowerShellを拡張する方法を学びます

    オタク学校はPowerShellを拡張する方法を学びます

    PowerShellには、シェルを拡張するための2つの方法があります。バイナリのみでC#のような本格的なプログラミング言語で開発されたスナップインを使用することも、バイナリだけでなくスクリプトベースのモジュールを使用することもできます。.

    シリーズの前の記事を必ず読んでください。

    • PowerShellを使用してWindowsを自動化する方法を学ぶ
    • PowerShellでコマンドレットを使用する方法
    • PowerShellでオブジェクトを使用する方法を学ぶ
    • PowerShellでの書式設定、フィルタリング、および比較の学習
    • PowerShellでリモート処理を使用する方法を学ぶ
    • PowerShellを使用してコンピューター情報を取得する
    • PowerShellでコレクションを操作する

    そして、シリーズの残りの部分を一週間中お楽しみに.

    スナップイン

    スナップインはとても去年です。冗談はさておき、スナップインはほとんどのスクリプト作成者が開発者ではなく、C#のような言語でしかスナップインを書くことができないため、PowerShellコミュニティの間では絶対にキャッチされません。それにもかかわらず、たとえばWeb配置など、スナップインを使用する製品はまだいくつかあります。シェルで使用できるスナップインを確認するには、次のコマンドを使用します。

    Get-PSSnapin - 登録済み

    スナップインによって追加されたコマンドを使用するには、まずそれをセッションにインポートする必要があります。そうすることで、次のように実行できます。

    Add-PSSnapin -Name WDeploySnapin3.0

    この時点で、Web配置スナップインがインストールされていないとエラーになります。私がそうであるようにあなたがそれをインストールしてもらえば、それはあなたのセッションにインポートされます。スナップインで利用できるコマンドの一覧を取得するには、単にGet-Commandコマンドレットを使用します。

    Get-Command -Module WDeploy *

    注:技術的にはこれはモジュールではありませんが、何らかの理由でまだModuleパラメーターを使用する必要があります。.

    モジュール

    モジュールはより新しく、そして前進する道です。それらはPowerShellを使用してスクリプト化することも、C#のような言語でコーディングすることもできます。組み込みコマンドのほとんどは、同様にモジュールにまとめられています。システム上のモジュールのリストを見るには、次のコマンドを使います。

    Get-Module -ListAvailable

    製品が更新されると、PowerShellの対応する製品はモジュールに移行されます。たとえば、SQLはかつてスナップインを持っていましたが、現在はモジュールで構成されています。.

    モジュールを使用するには、まずそれをインポートする必要があります。.

    インポートモジュール-Name SQLASCMDLETS

    モジュールがシェルに追加したすべてのコマンドを表示するために、スナップインで使用したのと同じトリックを使用できます。.

    それでそれは疑問を残します:PowerShellはどのようにあなたがあなたのシステムに持っているどんなスナップインとモジュールを知っていますか?スナップインは少し面倒なのでインストールする必要があります。インストールプロセスの一部には、PowerShellがスナップイン情報を見つけるために調べるいくつかのレジストリエントリの作成が含まれます。一方、モジュールは、PSModulePath環境変数のいずれかの場所に配置するだけで、シェルに登録できます。あるいは、単にモジュールへのパスを環境変数に追加することもできます。.

    ($ env:PSModulePath).Split(“;”)

    それは変数の内容を吐き出すでしょう。 SQLのようなモジュールがインストールされている場合、それがSQLモジュールの場所を含むように変数をどのように変更したかに注意してください。.

    モジュール自動ロード

    PowerShell 3では、いくつかの名前が追加された素晴らしい新機能が導入されました。どれも公式なものではありませんが、「Module Auto Loading」がそれを最もよく表しています。基本的には、Import-Moduleコマンドレットを使用して明示的にモジュールをインポートしなくても、外部モジュールに属するコマンドレットを使用できます。これを確認するには、まず次のコマンドを使用してシェルからすべてのモジュールを削除します。

    Get-Module |取り外しモジュール

    次のようにして、モジュールがロードされていないことを確認できます。

    取得モジュール

    コアライブラリにないコマンドレットを使用してください。テスト接続は良いものです。

    テスト接続ローカルホスト

    ロードしたモジュールをもう一度確認すると、実際にモジュールがロードされたことがわかります。.

    今日の皆さんはこれですべてです、明日はさらに詳しく.