1

我在模块 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.

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

谢谢你。

4

3 回答 3

3

您可以使用InitializationScript导入模块:

PS II> Start-Job -InitializationScript {import-module "c:\module.psm1"} -script {Uptime}
于 2012-09-06T11:06:36.133 回答
2

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

于 2012-09-06T05:59:51.370 回答
2

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

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

于 2012-09-06T07:01:37.840 回答