スクリプトブロック内のファイルの関数の使用に問題があります。関数ファイル名: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」という用語は、コマンドレット、関数、 スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、 パスが含まれている場合は、パスが正しいことを確認して、再試行してください。 + CategoryInfo:ObjectNotFound:(get-ostype:String)[]、CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException + PSComputerName:localhost
作成されたジョブには、ローカルスコープで定義された関数を継承しない独自のスコープがあります。ジョブスクリプトブロックに関数をロードするか、-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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加