我有一个包含多个功能的PowerShell脚本。如何从命令行调用特定函数?
这不起作用:
powershell -File script.ps1 -Command My-Func
答案 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 }"