2016-10-18 4 views
0

下記のスイッチブロックの代わりにハッシュテーブルまたはpscustomobjectを使用する方法はありますか?ハッシュテーブルは、関数を単純化するための素晴らしい方法のようです。スイッチブロックの代わりにハッシュテーブル/ p​​scustomobject

function Get-Farm 
{ 
[cmdletbinding()] 
    param (
    [parameter (Mandatory = $true)] 
    [string]$farm) 

Process{ 
     switch($farm){ 
      A { 
       $script:startHostID = 0 
       $script:endHostID = 0 
      } 
      B { 
       $script:startHostID = 1 
       $script:endHostID = 12 
      } 
      C { 
       $script:startHostID = 13 
       $script:endHostID = 24 
      } 

      BC { 
       $script:startHostID = 1 
       $script:endHostID = 24 
      } 

      ALL { 
       $script:startHostID = 1 
       $script:endHostID =48 
      } 
} 
} 

答えて

1

実際、ハッシュテーブルルックアップはより良い方法です。
Beginブロックにルックアップテーブルを作成し、Processに使用します。
また、パラメータの説明にValueFromPipelineを使用してください。それ以外の場合はProcessを使用しないでください。私は、コードを凝縮するのではなく、もちろん、あなたが個別にそれを書くことができますif()内部割り当てを使用しました

function Get-Farm 
{ 
[cmdletbinding()] 
param (
    [parameter(Mandatory, ValueFromPipeline)] 
    [string]$farm 
) 
Begin { 
    $lookup = @{ 
     A = 0,0 
     B = 1,12 
     C = 13,24 
     BC = 1,24 
     ALL = 1,48 
    } 
} 
Process { 
    if ($values = $lookup[$farm]) { 
     $script:startHostID = $values[0] 
     $script:endHostID = $values[1] 
    } 
} 
} 

$values = $lookup[$farm] 
if ($values) { 
+0

はあなたに感謝:)私が探していたものだけ。 – medinibster