我有一个powershell脚本,它是一个函数并接受参数。从powershell命令shell开始,如何执行函数?对于不同的用户来说,它似乎有所不同。
答案 0 :(得分:6)
您的脚本,只是一个脚本还是包含一个函数?如果它是一个脚本并且接受参数,它将看起来像这样:
-- top of file foo.ps1 --
param($param1, $param2)
<script here>
您调用它就像cmdlet一样,如果您从当前目录运行,则必须指定脚本的路径,如下所示:
.\foo.ps1 a b
另请注意,您将参数传递给脚本(和函数)空间,就像使用cmdlet一样。
你提到过函数,所以如果你的脚本看起来像这样,你有两个选择:
-- top of file foo.ps1 --
function foo ($param1, $param2) {
<script here>
}
如果像上面那样运行foo.ps1,除了在临时范围内定义一个名为foo的函数之外什么都不会发生,并且当脚本退出时该范围将消失。您可以在实际调用foo函数的脚本底部添加一行。但也许您打算将此脚本更多地用作可重用的函数库。在这种情况下,您可能希望将load
函数放入当前范围。您可以使用点源运算符.
执行此操作,如下所示:
C:\PS> . .\foo.ps1
C:\PS> foo a b
现在将在全局级别定义函数foo。请注意,您可以在另一个脚本中执行相同的操作,该脚本会将该函数加载到脚本的范围内。
答案 1 :(得分:0)
看看这篇文章,也许它适合你。 How to pass command-line arguments to a PowerShell ps1 file
无论如何,内置的$ args变量是一个包含所有命令行参数的数组。