我在模块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中编写所有代码而不是使用函数的建议,但我尝试过并得到类似的错误。
谢谢。
答案 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命令中加载模块。