use*_*803 13 powershell scripting arguments
我正在写一个.ps1 PowerShell脚本,我想知道如何找到用户传递的参数数量.例如,我需要我的程序来处理多个文件中的字符串检查.所以用户应该能够输入
./Script "a" ex1.txt 要么
./Script "a" ex1.txt ex2.txt
我知道在Bash中我们可以使用$#,但是我如何检查PowerShell?
Pet*_*ter 13
在脚本或函数中,您可以通过自动填充的$args变量访问传入的参数.这$args是一个数组,因此您可以找到通过其Count属性传递的参数数量.
一个例子:
function PrintArgs()
{
Write-Host "You passed $($args.Count) arguments:"
$args | Write-Host
}
Run Code Online (Sandbox Code Playgroud)
致电PrintArgs:
> PrintArgs 'a' 'b' 'c'
You passed 3 arguments:
a
b
c
Run Code Online (Sandbox Code Playgroud)
如果你有时间,请阅读一些帮助文件 ; 他们通常非常有帮助!
get-help *
get-help *parameters*
get-help about_Parameters
get-help about_Automatic_Variables
get-help about_Functions*
#etc...
Run Code Online (Sandbox Code Playgroud)
来自帮助的备注可以帮助您:
的$ args
包含传递给函数,脚本或脚本块的未声明参数和/或参数值的数组.创建函数时,可以使用param关键字声明参数,也可以在函数名后面的括号中添加以逗号分隔的参数列表.
在事件操作中,$ Args变量包含表示正在处理的事件的事件参数的对象.此变量仅在事件注册命令的Action块中填充.此变量的值也可以在Get-Event返回的PSEventArgs对象(System.Management.Automation.PSEventArgs)的SourceArgs属性中找到.
$ PSBoundParameters
包含传递给脚本或函数的参数字典及其当前值.此变量仅在声明参数的作用域中具有值,例如脚本或函数.您可以使用它来显示或更改参数的当前值,或将参数值传递给另一个脚本或函数.
如果最终使用绑定参数和未绑定参数,则可以将两者结合使用(示例)
稍微离题:
我强烈建议不要使用$ args.您应该始终使用绑定参数,在您被迫不使用它们的情况下很少.
为什么?所有带参数的函数都应遵循最佳实践,并使用param()块作为参数.如果您阅读了帮助文件中的参数,您会发现使用param块为您提供了各种有用的功能,如验证,强制强制参数,接受管道输入等.在让PowerShell执行操作之前,还需要它.使用[ cmdletbinding()] 为您完成更多工作
干杯!
| 归档时间: |
|
| 查看次数: |
24772 次 |
| 最近记录: |