从Powershell命令shell执行Powershell函数(带参数)

时间:2010-09-15 09:13:22

标签: powershell

我有一个powershell脚本,它是一个函数并接受参数。从powershell命令shell开始,如何执行函数?对于不同的用户来说,它似乎有所不同。

2 个答案:

答案 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变量是一个包含所有命令行参数的数组。