启动作业中无法识别功能

时间:2012-09-06 05:51:18

标签: powershell start-job

我在模块sysinfo.psm1中创建了一个“Get-Uptime”函数并导入了模块。

C:/pstools> get-command -Module sysinfo

CommandType     Name                                                Definition
-----------     ----                                                ----------
Function        Get-Uptime                                          ...

该功能在Powershell中运行良好。但是,每当我在Start-job -scriptblock {Get-Uptime $ servernae}中使用Get-Uptime函数时,作业失败并出现以下错误

Receive-Job : The term 'get-uptime' 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.

有人可以让我知道我错过了什么吗?我在网上搜索并发现了在scriptblock中编写所有代码而不是使用函数的建议,但我尝试过并得到类似的错误。

谢谢。

3 个答案:

答案 0 :(得分:3)

您可以使用 InitializationScript 导入模块:

PS II> Start-Job -InitializationScript {import-module "c:\module.psm1"} -script {Uptime}

答案 1 :(得分:2)

在调用函数之前,必须在ScriptBlock中明确导入模块。

答案 2 :(得分:2)

PowerShell作业在单独的进程中运行,为每个作业对象创建一个新的powershell.exe,并且该进程不知道在另一个会话中导入的模块。

为了需要Get-Uptime功能,请在Start-Job命令中加载模块。