PowerShell启动Job无法识别外部脚本函数问题求助
解决PowerShell Start-Job无法识别依赖函数的问题
PowerShell的Start-Job会启动一个完全独立的会话,当前运行WPF界面的会话中加载的函数、变量不会自动同步到作业会话里,这就是Jobs.ps1找不到CreateHashConverted和CompareFile的原因。
解决步骤
直接在Jobs.ps1开头显式导入依赖的脚本文件,确保作业会话能加载到所需函数:
- 确定JsonFunctions.ps1和ReadFunctions.ps1相对于Jobs.ps1的路径
- 在Jobs.ps1的参数块之后添加脚本导入命令
修改后的Jobs.ps1代码
Param( $PathFile1, $PathFile2, $Json ) # 导入依赖的函数脚本,根据实际文件位置调整相对路径 . "$PSScriptRoot\JsonFunctions.ps1" . "$PSScriptRoot\ReadFunctions.ps1" $Hash = CreateHashConverted -Path $PathFile1 -Fichier $Json $List = [System.Collections.ArrayList]::New() $List = CompareFile -Path $PathFile2 -Hash $Hash return $List
注意事项
$PSScriptRoot代表当前脚本(Jobs.ps1)所在的绝对路径,基于它拼接相对路径能避免作业工作目录不同导致的路径问题- 如果JsonFunctions.ps1或ReadFunctions.ps1还有其他依赖脚本,也要在Jobs.ps1中一并导入
- 也可以通过
Start-Job的-InitializationScript参数指定初始化脚本,但直接在Jobs.ps1中导入依赖更直观,便于后续维护
内容的提问来源于stack exchange,提问作者Aomichi
相关产品推荐
相关产品推荐

