SHOEISHA iD

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

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

PowerShell 2.0の新機能

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

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

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

Mandatory 名前付き引数

 高度な関数のパラメーターが必須であることを示すようにするには「Mandatory名前付き引数」を使用します。

 パラメーターの前に、Mandatory名前つき引数を次のように記述すると、必須のパラメーターになります。

[Parameter(Mandatory=$true)]

 この属性を指定しなかった場合には、パラメーターは省略可能であることを示します。リスト1は、Nameというパラメーターが必須であることを示しています。

リスト1 パラメータ属性の使用例1
Param
(
  [Parameter(Mandatory=$true)]
 [String]$Name
)

 もしもName1Name2という2つの必須パラメーターを持たせたい場合には、リスト2のように、それぞれのパラメーターの前に [Parameter(Mandatory=$true)]を記述します。

リスト2 パラメータ属性の使用例2
Param
(
  [Parameter(Mandatory=$true)]
 [String]$Name1,
  [Parameter(Mandatory=$true)]
 [String]$Name2
)

 ここで、必須なパラメータを1つ持つ高度な関数の例(リスト3)を見てみましょう。

リスト3 Say-Hello関数
01: function Say-Hello
02: {
03:   [CmdletBinding()]
04:   Param(
05:       [Parameter(Mandatory=$true)]
06:       [string] $Name  
07:   )
08:   Process
09:   {
10:     Write-Host ("こんにちは " + $Name + " さん")
11:   }
12: }

 リスト3は挨拶をするSay-Helloという関数です。この関数はNameという必須のパラメータを1つ取ることがわかります(6行目)。関数本体であるProcess{}中では、受け取ったパラメーターNameを使用して、「こんにちは XX さん」と表示します。

 実際の使用例は図1の通りとなります。

図1 Say-Hello関数の実行例
図1 Start-Jobコマンドレットの実行

Position名前付き引数

 Position名前付き引数を使用すると、パラメーターの位置を指定することができます。

 たとえば、リスト4は3つのパラメータ$A,$B,$Cを持ち、受け取ったパラメータの値を$A,$B,$Cという順番で表示するものです。それぞれパラメーターは位置指定をしており、$Aが1番目、$Bが3番目、$Cが2番目となります。

リスト4 Disp-Param関数
01: function Disp-Param
02: {
03:   [CmdletBinding()]
04:   Param(    
05:       [parameter(Position=0)]
06:       [string] $A,
07:       [parameter(Position=2)]
08:       [string] $B,
09:       [parameter(Position=1)]
10:       [string] $C              
11:   )
12:   Process
13:   {
14:     Write-Host ($A + ":" + $B +":" + $C)
15:   }
16: }

 リスト4を実行してみた例が図2です。パラメーターに「1 2 3」と与えていますが、Position指定がされているため、結果として受け取った値が「1 3 2」と表示されます。

図2 Disp-Param関数の実行例
図1 Start-Jobコマンドレットの実行

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

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

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング