如何在Powershell中创建参数列表?

时间:2012-04-20 07:37:02

标签: powershell powershell-v2.0

我有一个PowerShell脚本,在程序开头设置值的限制。例如

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

现在我希望能够处理任意数量的值,但我不需要每个值的复制代码。如何为每个值创建参数列表? 例如(pseducode)。

$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中没那么有经验

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 ... etc

当您使用代码中的值时,请注意类型。 示例:

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

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

您可能需要强制进行某些类型转换。