SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PowerShell 2.0の新機能

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

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

次のページ
Mandatory 名前付き引数

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
PowerShell 2.0の新機能連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4941 2010/03/08 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング