SHOEISHA iD

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

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

PowerShell 2.0の新機能

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

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

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

ParameterSetName 名前付き引数

 多くのコマンドレットは複数の書式を持っています。たとえば、Start-Sleepというコマンドレットは

Start-Sleep -Milliseconds <int> [<CommonParameters>]
Start-Sleep [-Seconds] <int> [<CommonParameters>]

という2つの書式を持っています(このコマンドレットは指定された時間だけ中断をするというものです)。高度な関数では、このような複数の書式を持たせたコマンドレットを作成することが可能です。

 複数の書式を持たせるには「ParameterSetName 名前付き引数」を使用します。リスト5のUse-ParamSetという高度な関数では、4行目と8行目でParameterSetNameを使用しています。

リスト5 Use-Param関数
01: function Use-ParamSet
02: {
03:     [CmdletBinding()]
04:     param(
05:         [Parameter(ParameterSetName="p1",Position=0)]
06:         [String]
07:         $Date,
08: 
09:         [Parameter(ParameterSetName="p2", Position=0)]
10:         [String]
11:         $Number
12:     )
13:     process{
14:         switch ($PsCmdlet.ParameterSetName)
15:         {
16:             "p1"  { Write-Host([DateTime]$Date);break}
17:             "p2"  { Write-Host([INT]$Number);break}
18:         }
19:     }
20: }

 4行目はParameterSetNamep1としており、パラメータは6行目の$Dateで受け取ります。これにより

Use-ParamSet -Date "日付"

という書式が使用できるようになります。

 5行目ではParameterSetNamep2としており、パラメータは10行目の$Numberで受け取ります。これにより2つめの書式として

Use-ParamSet -Number 数値

が使用できるようになります。

 高度な関数の本体では、switchの引数に$PsCmdlet.ParameterSetNameを使用して、書式p1を使用したか、書式p2を使用したのかを判定し、処理を振り分けています。

 Use-ParamSet-Dateパラメータを使用して実行した例を次に示します(図3)。

PS> Use-ParamSet -Date 2010/2/15
図3 Use-Param関数の書式1を使用した例
図1 Start-Jobコマンドレットの実行

 また、Use-ParamSet-Numberパラメータを使用して実行した例を次に示します。

PS> Use-ParamSet -Number 3
図4 Use-Param関数の書式2を使用した例
図1 Start-Jobコマンドレットの実行

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

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

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング