Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

PowerShell 2.0の新機能(4)
――高度な関数 編

スクリプトベースの高度な独自処理

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/03/08 14:00

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

目次

はじめに

 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属性の項で説明します。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • HIRO(ヒロ)

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

バックナンバー

連載:PowerShell 2.0の新機能
All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5