如何使用脚本块中文件的功能

问题描述 投票:1回答:1

我在脚本块中使用文件中的函数时遇到问题。功能文件名: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:本地主机
function powershell jobs
1个回答
1
投票

创建的作业具有自己的作用域,该作用域不继承您本地作用域中定义的功能。您可以在作业脚本块中加载功能,也可以使用-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
© www.soinside.com 2019 - 2024. All rights reserved.