如何使公共功能

时间:2017-05-18 08:12:35

标签: function powershell import

我想在文件functions.ps1中定义函数,然后从另一个脚本调用它。像这样:

Functions.ps1:

Function Hi()
{
"hi"
}

从另一个脚本(Call.ps1)调用它。

Call.ps1:

invoke-expression -Command .\functions.ps1
Hi 

但是函数是在脚本函数的本地范围内定义的。我得到错误:

The term 'hi' 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, v erify that the path is correct and try
again.

有没有一种简单的方法可以解决这个问题?

3 个答案:

答案 0 :(得分:5)

您必须 dotsource 您的脚本才能将其加载到当前的运行空间中:

. .\functions.ps1
Hi

答案 1 :(得分:0)

我认为这样做的方法是在应该使用该函数的脚本中使用该文件。

所以在将使用该函数的脚本中放置这样的东西。

。 \ functions.ps1 然后你可以开始在该文件中调用函数。

有点记忆,但认为它会起作用。

编辑:删除了一个脑胎.. :)

答案 2 :(得分:0)

是的,dotsource是你正在寻找的东西。 如果你的脚本包含空格,你可以像这样点源它

."C:\Dotsourced script.ps1"

没有空间,就像其他人说的那样

.C:\function1.ps1

dotourced脚本中包含的所有函数和逻辑将在获取时加载。因此,请尽量使脚本保持在函数中的点源,否则它将在源代码时运行。

在SS64上阅读更多相关信息,例如: https://ss64.com/ps/source.html