Welcome to TechNet Blogs Sign in | Join | Help

Shigeya Tanabe's blog

田辺茂也 (IT Pro エバンジェリスト)

News


  • コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。

    イベント

    ブックマーク

    * Click here to read in English *

    Clicky

PowerShell: Visual Studio 2005 テンプレート

2006年も間もなく終わりです。お世話になった皆様ありがとうございました。今年やり残したことは山のようにありますが、何か一つだけ年が明ける前にやっておこうと考え、このエントリーを書いています。トピックはいたって日常的ですが。。

自分の活動を振り返って、PowerShellについては、今年は存在を知っていただいて、強力な運用管理ツールとして認識してもらおうというところまででした。来年はサーバーアプリケーションを開発している方にも、そのアプリケーションを管理するコマンドレットを開発していただいて、PowerShellで運用管理ができるようなアプリケーションが増えるといいなと思っています。そのための情報も集めていきたいと思っています。

さてここでご紹介するのは、Visual Studio 2005でPowerShellのスナップインやコマンドレットを開発する際に便利なテンプレートです。以下のページからダウンロードできます。

Windows PowerShell Visual Studio 2005 Templates (C# and VB.NET)
http://channel9.msdn.com/ShowPost.aspx?PostID=256835

これは、マイクロソフトの公式なプロダクトではなく、David Aikenという方が個人で作られたものです。Davidさんは、マイクロソフト本社のDSIエバンジェリストだそうです。(DSIとはDynamic Systems Initiativeの略で、マイクロソフトが目指す、自律的かつ動的なシステムのロードマップです。)

さて、ダウンロードして解凍すると、VSI形式のインストーラが2つ、C#用とVB.NET用のものが入っています。ここではC#用のテンプレートをインストールします。

3つのテンプレートがインストールされます。

  • Windows PowerShell プロジェクトテンプレート
  • コマンドレット(Cmdlet)テンプレート
  • コマンドレット(PSCmdlet)テンプレート

コマンドレットを作るには、Cmdletクラスを継承する方法とPSCmdletクラスを継承する方法があります。前者はPowerShellの実行環境に依存しません。後者はPowerShellの実行環境内のみで実行できます。詳しくはWindows SDKのヘルプファイル、または以下のページを参照してください。

Creating Windows PowerShell Cmdlets
http://msdn2.microsoft.com/en-us/library/ms714598.aspx

ではさっそくプロジェクトを作ってみます。

スクリーンショットはVisual C# 2005 Express Editionのものです。Windows PowerShellテンプレートを選択してプロジェクト作成すると、PowerShellのスナップインを作成するために必要なコードと参照などの設定がされています。スナップインの説明のプロパティ文字列を確認しておきます。

次に、コマンドレット本体を作ります。プロジェクトに新しい項目を追加します。

ここではWindows PowerShell Cmdletを作ることにし、ファイル名を指定します。コマンドレットの命名ルールは [動詞]-[名詞] の形式です。ファイル名にコマンドレット名の名詞を指定しておくと、テンプレートが自動的にコードに埋め込んでくれるので便利です。

 

この例では、Get-TimeToNewYearという、2006年の残り時間を表示するコマンドレットを作っています。

Parametersリージョンには、パラメータの設定例が書いてありコメントアウトされているので、パラメータの設定に便利です。コマンドレット処理の本体は、ProcessRecord()メソッド内に書きます。出力はWriteObject()メソッドを使います。

コマンドレットが書けたら、プロジェクトをビルドします。DLLファイル、ここではTimeToNewYear.dllができます。これがPowerShellのスナップインです。ここから先の作業はPowerShellで行います。

まずスナップインを登録します。オレンジ部分が登録コマンドです。簡単のため、DLLファイルを c:\psh にコピーしてあります。

PS C:\psh> C:\windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\psh\TimeToNewYear.dll
Microsoft(R) .NET Framework Installation utility Version 2.0.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.

トランザクションのインストールを実行中です。

...(中略)...

コミット段階が正常に終了しました。

トランザクション インストールが完了しました。

登録済みのスナップインを確認します。

PS C:\psh> Get-PSSnapin -registered

Name : TimeToNewYear
PSVersion : 1.0
Description : Registers the CmdLets and Providers in this assembly

スナップインを追加して、コマンドレットを実行してみます。

間に合いました。ではよいお年を!

Posted: Sunday, December 31, 2006 11:19 PM by Shigeya Tanabe
Filed under:

Comments

No Comments

Anonymous comments are disabled
Page view tracker