【问题标题】:Arguments with Powershell Scripts on Launch启动时使用 Powershell 脚本的参数
【发布时间】:2012-11-04 16:44:12
【问题描述】:

与 C 和其他语言一样,您可以在实际执行脚本时为 script/.exe 提供参数。例如:

myScript.exe Hello 10 P

Hello, 10 和 P 被传递给程序本身的某个变量。

这在 Powershell 中可行吗?如果是这样,你如何将这些参数赋予给定的 $variable

谢谢!

【问题讨论】:

    标签: variables powershell argument-passing


    【解决方案1】:

    用这样的参数块定义你的脚本:

    -- Start of script foo.ps1 --
    param($msg, $num, $char)
    
    "You passed in $msg, $num and $char"
    

    您还可以进一步键入限定参数,例如:

    -- Start of script foo2.ps1 --
    param([string]$msg, [int]$num, [char]$char)
    
    "You passed in $msg, $num and $char"
    

    您还可以指定默认值和所需值,例如:

    -- Start of script foo3.ps1 --
    param([string]$msg=$(throw "Msg param is required"), [int]$num, [char]$char="P")
    
    "You passed in $msg, $num and $char"
    

    您可以使用高级功能(指定属性以验证参数等)获得更高级的功能。但这应该能让你继续前进。

    【讨论】:

      【解决方案2】:

      只是对@Keith Hill 回答的补充......

      当您谈论“C”时,您还可以使用automatic variable $args 编写带有参数的脚本。

      $Args 包含传递给函数、脚本或脚本块的未声明参数和/或参数值的数组。

      -- Start of script foo3.ps1 --
      if ($args.length -gt 0)
      {
        write-host "first param is $($args[0])"
      }
      
      for ($i=0 ; $i -lt $args.length ; $i++)
      {
        write-host "$i) " $args[$i]
      }
      

      你可以调用 thr 脚本

      .\foo3.ps1 coucou bonjour "hello world"
      first param is coucou
      0)  coucou
      1)  bonjour
      2)  hello world
      

      【讨论】:

        猜你喜欢
        • 2012-02-06
        • 1970-01-01
        • 2010-12-20
        • 1970-01-01
        • 2018-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多