在 powershell 窗口中,我运行以下工作流程:
workflow foo { Suspend-Workflow; "hello world" | Out-File c:\users\weijgerss\desktop\foo.txt }
然后要恢复工作流程,我通过任务计划程序安排了以下计划以在启动时运行:
Import-Module PSWorkflow
$jobs = Get-Job -state Suspended
$jobs > c:\users\weijgerss\desktop\zqqfff.txt
$resumedJobs = $jobs | resume-job -wait
$resumedJobs | wait-job
# Task scheduler action: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle Normal -NoLogo -NoProfile -Command "&'c:\users\weijgerss\desktop\resume.ps1'"
工作流不会在启动时恢复,也不会通过任务计划程序手动触发。zqqfff.txt的内容表示任务调度器激活的powershell看不到工作流。当我运行 Get-Job 时,常规的 powershell 窗口可以看到工作流。
(普通的 powershell 窗口和任务调度程序 powershell 实例都以同一用户身份运行。)
我使用 procmon 来查看发生了什么,从中可以看出,当 powershell 通常与 taskscheduler 相比时,它正在查看不同的工作流持久性路径,即:
C:\Users\weijgerss\AppData\Local\microsoft\windows\PowerShell\WF\PS\default\S-1-5-21-3519956147-933941082-741972881-500_EL(普通的powershell窗口使用这个文件夹)C:\ Users\weijgerss\AppData\Local\microsoft\windows\PowerShell\WF\PS\default\S-1-5-21-3519956147-933941082-741972881-500_EL_NI(任务计划程序激活的 powershell 实例使用此文件夹)
我完全被难住了。如何让任务计划程序激活 powershell 实例以查看与普通 powershell 窗口相同的工作流?