我在脚本块中使用文件中的函数时遇到问题。功能文件名:functions.ps1
。
我更喜欢在文件中使用函数,通常它可以正常工作。但是在我用于作业的脚本块中,我有错误。您能帮我在脚本块中使用函数吗?
. .\functions.ps1
$ip = "10.0.0.24"
$scriptblock = { get-ostype -ip $args[0] }
Start-Job -name "name" -ScriptBlock $scriptblock -ArgumentList $ip
工作错误:
术语“ get-ostype”未被识别为cmdlet,函数,脚本文件或可操作程序。检查名称的拼写,或者包含路径,请确认路径正确,然后重试。+ CategoryInfo:ObjectNotFound:(get-ostype:字符串)[],CommandNotFoundException+ FullyQualifiedErrorId:CommandNotFoundException+ PSComputerName:本地主机
创建的作业具有自己的作用域,该作用域不继承您本地作用域中定义的功能。您可以在作业脚本块中加载功能,也可以使用-InitializationScript
参数。
# Option 1:
$ip="10.0.0.24"
$scriptblock = {get-ostype -ip $args[0]}
$initializationscript = {. c:\path\functions.ps1}
Start-Job -InitializationScript $initializationscript -ScriptBlock $scriptblock -ArgumentList $ip
# Option 2:
$ip="10.0.0.24"
$scriptblock = {. c:\path\functions.ps1; get-ostype -ip $args[0]}
Start-Job -ScriptBlock $scriptblock -ArgumentList $ip