2010-03-21 84 views
1

我保存在PS1文件的脚本中,我定义2个功能,例如:我PowerShell的功能似乎并没有被登记

function Invoke-Sql([string]$query) { 
    Invoke-Sqlcmd -ServerInstance $Server -Database $DB -User $User -Password $Password -Query $query 
} 

function Get-Queued { 
    Invoke-Sql "Select * From Comment where AwaitsModeration = 1" 
} 

在PowerShell控制台然后我通过键入调用PS1文件(它位于路径中的文件夹中,并且自动完成工作)

但是,我无法开始使用这些功能。我很困惑,因为当我复制/粘贴到控制台的功能,一切都很好,他们的工作。我也有一个在我的个人资料中定义的功能,它的工作原理。我在哪里错误地思考,为什么它不能解决我想要做的事情?

回答

4

你需要“dot source”这个文件。也就是说代替:

PS> C:\PathTo\MyScript.ps1 

执行该脚本(在你的情况下,脚本只包含了这些功能,但使用这些函数没有),但不会保留在全局状态定义的函数和变量,而应该这样做:

PS> . C:\PathTo\MyScript.ps1 

这会将您的函数“加载”到全局范围中,以便稍后使用它们。

在PowerShell 2.0中,您还可以使用Import-Module将.psm1文件中的脚本作为“模块”加载,从而提供更好的重用和部署故事。

+0

就是这样,thx! – flq 2010-03-21 20:44:37

相关问题