スクリプトベースの高度な独自処理
HIRO [著] 2010/03/08 14:00

 PowerShell 1.0 では、独自の専用コマンドレットを作成するのにVB.NETやC#といった言語を使用する必要がありました。このため、コマンドレット開発は敷居が高かったのですが、PowerShell 2.0ではPowerShellスクリプトを使用して、高度な関数を作成することができます。今回はこの「高度な関数」に焦点を当てて解説します。

1 2 3 4 →

はじめに

 PowerShell 2.0には200を越える便利なコマンドレットが標準搭載されています。しかし、搭載されているコマンドレットのすべてが、自分の要求をすべて満たすとは限りません。そこで、要求を満たすために、関数やコマンドレットを作成します。

 PowerShell 1.0では関数を作成することができました。しかし、コマンドレットを作成するにはVB.NETやC#といった言語を使用して作成する必要があり、敷居が高いものでした。PowerShell 2.0ではスクリプトベースの「高度な関数」を作成することができるようになりました。高度な関数はコマンドレットに似た機能の関数を指します。

 今回は、この「高度な関数」を作成する方法について説明します。 

対象読者

  • PowerShellの基本的な操作ができる方。

 PowerShellについて学びたい方は、PowerShell入門の連載を参照ください。

実行環境

  • PowerShell 2.0

関数をコマンドレットとして認識させる

 「高度な関数」は、通常の関数を作成する場合とよく似ています。
通常の関数にCmdletBinding 属性を使用することで、自身をコマンドレットと同様に動作する関数として識別します。

 高度な関数を定義する基本構文は次の通りです

高度な関数の基本構文
01: function 関数名
02: {
03:   [CmdletBinding()]
04:   Param(
05:     [Parameter(パラメータ属性)]
06:     パラメーター
07:   )
08:   Process
09:   {
10:     #関数本体
11:   }
12: }

 3行目にあるのが[CmdletBinding()]属性です。この属性により、定義された関数は「高度な関数」として認識されるようになります。

 また、パラメーターは4~7行目のParam( ) の中に記述します。関数本体は、8~11行目のProcess{ }の中に記述します。

パラメーターとパラメーター属性

 多くのコマンドレットはパラメーターを持ち備えています。高度な関数もパラメーターを持たせることが可能であり、さまざまな属性を付けることができます。

 パラメーターに属性を付けるには

[Parameter(属性名=値)]

の書式で記述します。

 1つのパラメーターに対して複数の属性を持たせることが可能で、その場合は

[Parameter(属性名1=値1, 属性名2=値2, 属性名n=値3)]

の書式で記述します。

 また、属性名=値で表さないものもあり、その場合は単純に

[属性名]

のようにして記述します。この書式を使った例はAlllowNull属性の項で説明します。


1 2 3 4
→
INDEX
PowerShell 2.0の新機能(4) ――高度な関数 編
Page1
はじめに
対象読者
実行環境
関数をコマンドレットとして認識させる
パラメーターとパラメーター属性
Mandatory 名前付き引数
Position名前付き引数
ParameterSetName 名前付き引数
ValueFromPipeline 名前付き引数
AllowEmptyString 属性
まとめ
プロフィール
HIRO ヒロ

HIRO's.NETのHIROです。
とある半導体工場のSEです。
VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。
最近はBlog でPowerShellについて書いています。

2008/07/07にPowerShell from Japan!!というサイトを立ち上げました。PowerShellユーザーが集まってブログを書いています。よろしかったら来てください。

HIRO's.NET Blog
HIRO's.NET - VB.NET, C#, PowerShell Tips -
PowerShell from Japan!!


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト