与C和其他语言类似,您可以在物理执行脚本时提供脚本/ .exe参数。例如:
myScript.exe Hello 10 P
其中Hello,10和P被传递给程序本身的某个变量。
这是否可以在Powershell中使用?如果是这样,你如何将这些args给予给定的$ variable
谢谢!
答案 0 :(得分:17)
使用如下的参数块定义脚本:
-- 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"
您可以使用高级功能(指定属性来验证参数等)来获得更好的体验。但这应该让你前进。
答案 1 :(得分:8)
只是@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