Windows PowerShellは.NET Frameworkをベースとした非常に強力なシェルです。ただし、独自のコマンドレットを作成し、Windows PowerShellを拡張できることについてあまり知られていないかと思います。今回から数回にわたり、コマンドレットの開発手法について説明します。
はじめに
Windows PowerShellは.NET Frameworkをベースとした非常に強力なシェルです。ただし、独自のコマンドレットを作成し、Windows PowerShellを拡張できることについてあまり知られていないかと思います。今回から数回にわたり、コマンドレットの開発手法について説明します。
開発環境について
開発環境はVisual Studio 2005以降(説明はVisual Studio 2008 Professional Edition、言語はVB.NET)を想定しています。
Microsoft Windows SDKをダウンロードし、インストールしてください。
また、Windows PowerShellがインストールされていることを前提としています。インストール方法は『Windows PowerShell入門(1) - 基本操作編』を参照ください。
PSスナップイン
PowerShell用の独自コマンドレットを作成するには、.NET Frameworkを用いてPSスナップインを作成する必要があります。「PSスナップイン」とはPowerShellのプロバイダやコマンドレットを含むファイルのことで、Visual Studioでクラスライブラリとして開発を行います。
PowerShellにはあらかじめ下記のPSスナップインが登録されており、Get-PSSnapinコマンドレットで確認できます。
| PSスナップイン | 説明 |
| Microsoft.PowerShell.Core | Windows PowerShell のコンポーネントを管理するコマンドレット |
| Microsoft.PowerShell.Host | Windows PowerShell ホストで使用するコマンドレット |
| Microsoft.PowerShell.Management | Windows コンポーネントの管理に使用する管理コマンドレット |
| Microsoft.PowerShell.Security | Windows PowerShell のセキュリティを管理するためのコマンドレット |
| Microsoft.PowerShell.Utility | データの操作に使用できるユーティリティ コマンドレット |
新規プロジェクトの作成と初期設定
はじめにVisual Studioを起動し、新しいプロジェクトの作成で、言語にVisual Basic、テンプレートにクラスライブラリを選択します。ファイル名と場所を入力して[OK]ボタンを押してください(ここではファイル名を「My.PowerShell.Cmdlets」、場所を「C:\Work」とします)。
プロジェクトを作成すると、デフォルトで「Class1.vb」というファイルが追加されています。まずはこのファイルを削除します。
次に、PSスナップインを開発する上で欠かせない以下のdllを参照設定に追加します。
| 追加するdll | 参照先 |
| System.Management.Automation.dll | C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0 |
| System.Configuration.Install.dll | System.Configuration.Install.dll |
上記はWindows PowerShellおよびWindows SDKを既定通りインストールした場合です。必要に応じて適宜読み替えてください。
この記事は参考になりましたか?
- Power Shellを拡張するコマンドレットの作成連載記事一覧
-
- Windows PowerShell 独自コマンドレットの開発(2)
- Windows PowerShell 独自コマンドレットの開発
- この記事の著者
-
HIRO(ヒロ)
HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

