SHOEISHA iD

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

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

PowerShell 2.0の新機能

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

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

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

ValueFromPipeline 名前付き引数

 高度な関数は、パイプラインからのデータを受け取ることも可能です。この場合は「ValueFromPipeline名前付き引数」を使用します。リスト6はRecvDataというパラメーターにValueFromPipeline属性を指定しています。

リスト6 Use-PipeLine関数
01: function Use-PipeLine
02: {
03:    [CmdletBinding()]
04:     Param
05:     (
06:         [parameter(Mandatory=$true,
07:             ValueFromPipeline=$true)]
08:             [String]
09:             $RecvData
10:     ) 
11:     Process
12:     {
13:         Write-Host $RecvData
14:     }
15: }

 Use-PipeLine関数ををパイプラインを通して使用する例を次に示します(図5)。

PS> 1..3 | Use-PipeLine
図5 Use-PipeLine関数をパイプを通して使用した例
図1 Start-Jobコマンドレットの実行

 パラメータ属性にValueFromPipelineを指定したからと行って、必ずパイプラインを通す必要はなく、次のように通常の関数のようにして使用することも可能です(図6)。

PS> Use-PipeLine 3
図6 Use-PipeLine関数をパイプを通さないで使用した例
図1 Start-Jobコマンドレットの実行

AllowEmptyString 属性

 通常、Mandatory属性を使用して必須にしたパラメーターは、空文字を使用することができません。これを回避することができるようAllowEmptyString 属性が準備されています。
AllowEmptyString 属性はParameter()の中に記述することはできず、リスト7に示すように単独で[AllowEmptyString()]と記述します(6行目)。

リスト7 Use-AllowEmptyString 関数
01: function Use-AllowEmptyString
02: {
03:     [CmdletBinding()]
04:     param(
05:         [parameter(Mandatory=$true)]
06:         [AllowEmptyString()]        
07:         [String]
08:         $Date
09:     )
10:     process{
11:         Write-Host $Date
12:     }
13: }

まとめ

 今回は、高度な関数について紹介しました。高度な関数の作成方法を覚えておけば、VB.NETやC#を使用しなくても、コマンドレットと似た動作をする関数を作成できることをお分かりいただけたかと思います。

 今回紹介したパラメーター属性は、主要なものだけを取り上げており、すべてを紹介したものではありません。

 興味を持たれた方はぜひ下記のように入力して、他の属性についても調べてみることをお勧めします。

PS> Help about_Functions_Advanced_Parameters

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング