【发布时间】:2018-04-26 19:07:49
【问题描述】:
我不明白这一点。如果我将参数放在脚本的顶部,然后使用命令行运行脚本并指定用户名,则用户名将分配给$UserName
Param([string]$UserName)
如果我将它包装在一个函数中,然后从命令行运行它:
例如: ./Script.ps1 -UserName BLAH
它没有被分配给$UserName
Function MainFunction
{
Param([string]$UserName)
}
#Call Mainfunction
MainFunction;
这是为什么呢?
【问题讨论】:
-
还是不行。我做了 .\Test.ps1 MainFunction -UserName 测试,它仍然不存储值
-
是什么让你认为它应该是?命令行参数被强制进入一些随机函数,仅仅因为函数存在,覆盖了你显式调用没有任何参数的函数的事实?那将..无法使用。
-
抱歉我没关注你?根据我所阅读的内容,任何类型的命令行参数验证都需要在函数中。所以在 Param() 之后你使用 Process{Try{test}Catch{}}
-
这是几个不同的想法混合在一起。您可以在脚本中编写代码并从命令行运行它。这可以包括没有任何功能的参数和参数验证。它可以(单独)包括 process/try/catch 块。除此之外,您可以在函数中编写代码,其中也可以包含所有这些内容,并且与命令行无关。除了所有这些之外,您还可以“点源”或“导入模块”一个脚本,这使得其中的函数可以直接从命令行使用,而不是调用脚本文件名。