从命令行调用特定的PowerShell函数

时间:2009-09-10 14:50:54

标签: powershell

我有一个包含多个功能的PowerShell脚本。如何从命令行调用特定函数?

这不起作用:

powershell -File script.ps1 -Command My-Func

4 个答案:

答案 0 :(得分:70)

您通常会将脚本“点”到范围内(全局,另一个脚本,在脚本块中)。对脚本进行加点将在该范围内加载和执行脚本,而无需创建新的嵌套范围。使用函数,这样做的好处是它们在脚本执行后仍然存在。你可以做Tomer建议的事情,除非你需要点脚本,例如:

powershell -command "& { . <path>\script1.ps1; My-Func }"

如果您只想从当前的PowerShell会话中执行该功能,请执行以下操作:

. .\script.ps1
My-Func

请注意,任何不在函数中的脚本都将被执行,任何脚本变量都将成为全局变量。

答案 1 :(得分:4)

也许像

powershell -command "& { script1.ps; My-Func }"

答案 2 :(得分:3)

该指令抛出以下错误消息。正如Keith Hill建议的那样,在文件名的名称之前需要点来加载到内存中。

MyFunction: The term 'MyFunction' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

答案 3 :(得分:1)

此解决方案适用于Powershell内核:

powershell -command "& { . .\validate.ps1; Validate-Parameters }"