Unable to resume a workflow via task scheduler

后端 未结 1 1387
予麋鹿
予麋鹿 2020-12-21 05:10

In a powershell window I run the following workflow:

workflow foo { Suspend-Workflow; \"hello world\" | Out-File c:\\users\\weijgerss\\desktop\\foo.txt }


        
相关标签:
1条回答
  • 2020-12-21 05:55

    The below scripts give you a solution that automatically resumes powershell workflows after a reboot/crash using task scheduler at system start up:

    resume-workflows.ps1: (the first line below fixes the _NI issue mentioned in the question)

    [System.Management.Automation.Remoting.PSSessionConfigurationData]::IsServerManager = $true
    Import-Module PSWorkflow
    Get-Job -State Suspended | Resume-Job -Wait| Wait-Job
    

    resume-workflows.cmd: (works around a windows 8/server 2012 task scheduler bug)

    @rem This is a workaround for task scheduler bug 
    @rem See: http://support.microsoft.com/kb/2968540
    set "USERPROFILE=%USERPROFILE%\..\%USERNAME%"
    set "APPDATA=%USERPROFILE%\AppData\Roaming"
    set "LOCALAPPDATA=%USERPROFILE%\AppData\Local"
    "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NonInteractive -WindowStyle Normal -NoLogo -NoProfile -Command "&'c:\path\to\resume-workflows.ps1'"
    

    To put it all together use the following powershell script to shedule resume-workflows.cmd to run at system start up:

    $trigger = New-ScheduledTaskTrigger -AtStartup
    $action = New-ScheduledTaskAction -Execute "c:\path\to\resume-workflows.cmd" 
    $currentuser = ([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)
    Register-ScheduledTask -TaskName "Resume $($currentuser.Replace('\', '-'))'s Powershell Workflows" `
        -Trigger $trigger -Action $action -RunLevel Highest -User $currentuser `
        -Password (Read-Host "Enter password for $currentuser")
    

    Enjoy!

    (ILSpy, sysinternal's procmon, plenty of google and a dash of windbg were all instrumental in bringing the above answer to you)

    0 讨论(0)
提交回复
热议问题