1

プログラムの開始時に値の制限を設定する PowerShell スクリプトがあります。例えば

$value1Min      = 1
$value1Max      = 99
$value1Interval = 100
$value1Post     = 125

ここで、任意の数の値を処理できるようにしたいと考えていますが、各値のコピー コードは必要ありません。各値のパラメーターのリストを作成するにはどうすればよいですか? 例 (疑似コード)。

$info={{min      = 1
        max      = 99
        interval = 100
        post     = 125
       },
       {min      = 100
        max      = 1000
        interval = 10000
        post     = 548
       },
       {min      = 50
        max      = 100
        interval = 500
        post     = 452
       }
      }

私は PowerShell の経験があまりありません

4

2 に答える 2

4

次のようなハッシュテーブルを含む配列を作成できます。

$info=@(
    @{
    "min"      = 1;
    "max"      = 99;
    "interval" = 100;
    "post"     = 125;
   },
   @{
    "min"      = 100;
    "max"      = 1000;
    "interval" = 10000;
    "post"     = 548;
   },
   @{
    "min"      = 50;
    "max"      = 100;
    "interval" = 500;
    "post"     = 452;
   }
  )

値を取得する方法の例:

PS C:\Users\stackoverflow> $info[0].interval
100

ハッシュテーブルを含むハッシュテーブルを作成することもできます:

$info=@{
    "info1"=@{
    "min"      = 1;
    "max"      = 99;
    "interval" = 100;
    "post"     = 125;
   };
   "info2"=@{
    "min"      = 100;
    "max"      = 1000;
    "interval" = 10000;
    "post"     = 548;
   };
   "info3"=@{
    "min"      = 50;
    "max"      = 100;
    "interval" = 500;
    "post"     = 452;
   }
  }

値を取得する方法の例:

PS C:\Users\stackoverflow> $info.info1.max
99
于 2012-04-20T11:05:57.340 に答える
1

パラメータを xml ファイルからインポートし、posh オブジェクトを介してアクセスできます。

例: XML ファイル val.xml:

<Param>
    <Param1 min= '1' max= '99' interval = '100' post = '125'>
      </Param1>
      <Param2 min= '100' max= '1000' interval = '10000' post= '548'>
       </Param2>
       <Param3 min= '50' max='100' interval='500' post= '452'>
    </Param3>
</Param>

次のコマンドを使用して、powershell コンソールに xml ファイルをインポートします。

$xml = [xml](Get-Content val.xml)

これで、次のようにデータにアクセスできます。

$xml.Param

出力:

Param1                          Param2                          Param3                        
------                          ------                          ------                        
Param1                          Param2                          Param3  

param1 の値を取得したい場合:

$xml.Param.Param1

出力:

min                     max                     interval                post                  
---                     ---                     --------                ----                  
1                       99                      100                     125  

そして $xml.Param.Param1.min ...など

コードで値を使用する場合は、型に注意してください。例 :

PS > $xml.Param.Param1.min.gettype()

IsPublic IsSerial Name                                     BaseType                           
-------- -------- ----                                     --------                           
True     True     String                                   System.Object  

いくつかの型変換を強制する必要がある場合があります。

于 2012-04-20T11:32:54.643 に答える