启动时使用 Powershell 脚本的参数

Posted

技术标签:

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

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

myScript.exe Hello 10 P

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

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

谢谢!

【问题讨论】:

【参考方案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

【讨论】:

以上是关于启动时使用 Powershell 脚本的参数的主要内容,如果未能解决你的问题,请参考以下文章

从PowerShell中使用参数和凭据启动.ps1脚本并从中获取输出

为自动执行设置 PowerShell 脚本

我的 PowerShell 脚本仅在从 ISE 运行时才有效

在计算机启动时运行 powershell 网络脚本将失败

通过启动过程传递变量的Powershell问题

Windows从web下载文件的几种方式