无法在开始作业的脚本块中访问Commandlet

时间:2018-08-29 09:46:40

标签: powershell

我们正在尝试使用remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 ); add_filter('woocommerce_product_related_posts_query', '__return_empty_array', 100); PowerShell中编写后台作业。这项工作消耗了一个cmdlet。由于某些原因,该cmdlet无法识别。但是,直接访问相同的cmdlet即可。

Start-Job

错误:

  

“ commandletName”一词无法识别为cmdlet的名称,   功能,脚本文件或可操作程序。检查拼写   名称,或者如果包含路径,请确认路径正确,并   再试一次。 + CategoryInfo:ObjectNotFound:(commandletName:String)   [],CommandNotFoundException + FullyQualifiedErrorId:   CommandNotFoundException + PSComputerName:本地主机

我需要分别为后台作业导入一些东西吗?

1 个答案:

答案 0 :(得分:3)

Start-Job将启动一个全新的PowerShell会话,因此任何已导入/创建的cmdlet必须重新导入作业本身。

您可以使用$ using范围将其拉入。

function Write-HelloWorld {
    "Hello World"
}

Start-Job -ScriptBlock {
    ${function:Write-HelloWorld} = ${using:function:Write-HelloWorld}

    Write-HelloWorld
}