Powershell 无法访问启动作业的脚本块中的commandlet

Powershell 无法访问启动作业的脚本块中的commandlet,powershell,Powershell,我们正在尝试使用Start job在PowerShell中编写后台作业。此作业使用cmdlet。由于某些原因,无法识别cmdlet。但是,当直接访问时,相同的cmdlet可以工作 Code Snippet : Start-Job -ScriptBlock { } 错误: 术语“commandletName”未被识别为cmdlet的名称, 函数、脚本文件或可操作程序。检查单词的拼写 名称,或者如果包含路径,请验证该路径是否正确,并且 再试一次CategoryInfo:ObjectNotFound

我们正在尝试使用
Start job
PowerShell
中编写后台作业。此作业使用cmdlet。由于某些原因,无法识别cmdlet。但是,当直接访问时,相同的cmdlet可以工作

Code Snippet : Start-Job -ScriptBlock { }
错误:

术语“commandletName”未被识别为cmdlet的名称, 函数、脚本文件或可操作程序。检查单词的拼写 名称,或者如果包含路径,请验证该路径是否正确,并且 再试一次CategoryInfo:ObjectNotFound:(commandletName:String) [],CommandNotFoundException+FullyQualifiedErrorId: CommandNotFoundException+PSComputerName:localhost


是否需要为后台作业单独导入特定的内容?

启动作业将启动一个全新的PowerShell会话,因此必须在作业本身中重新导入已导入/创建的所有cmdlet

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

function Write-HelloWorld {
    "Hello World"
}

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

    Write-HelloWorld
}

Start Job启动一个全新的PowerShell会话,因此必须在作业本身中重新导入已导入/创建的所有cmdlet

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

function Write-HelloWorld {
    "Hello World"
}

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

    Write-HelloWorld
}