【发布时间】:2018-11-09 12:39:44
【问题描述】:
我有一个脚本tester.ps1;它所做的第一件事是调用一个名为main 的函数(在脚本本身中定义)。
我需要传入从命令行传入it的自动变量$args。
我该怎么做?
以下似乎不起作用:
#Requires -Version 5.0
#scriptname: tester.ps1
function main($args) {
Write-Host $args
}
# Entry point
main $args
当我保存这个tester.ps1并调用它时,函数看不到传入的参数?
【问题讨论】:
-
不要将
$args定义为函数中的参数:function main {write-host $args } -
不能使用
$args作为实参;它已经是一个特殊的值,它始终包含函数的所有参数。在这种情况下,只需将其设为main()就足够了。 (仍然需要将$args传递给它。)如果您有许多需要访问所有函数的函数,则将$args保存在全局变量中的函数之外是另一种选择。 -
谢谢 - 但是如何“存储”我调用脚本时设置的 $args 的副本。以这种方式构造我的脚本(使用“主”函数)的一个原因是尽量避免将变量污染回调用环境......
-
知道了:我刚刚将函数参数重命名为“my_args”。
标签: powershell scripting powershell-5.0