.net PowerShell工作流在通过任务计划程序中的计划作业运行时自行挂起

.net PowerShell工作流在通过任务计划程序中的计划作业运行时自行挂起,.net,powershell,workflow,workflow-foundation,powercli,.net,Powershell,Workflow,Workflow Foundation,Powercli,我使用PSworkflow创建了一个脚本,它从13个vCenter收集VM/许可证/网络/mpp等详细信息,并在csv文件中输出所有详细信息。 当我在正常ps会话(用户交互会话)中手动运行该脚本时,该脚本运行良好,但当触发任务计划程序计划时,提交的PSworkflow作业将自行挂起,并且不会给出其挂起PSWF作业的原因的错误信息 以下是如何在任务调度器中配置它。 -创建了启动powershell脚本的批处理文件。下面是命令 powershell.exe-命令“&'XXX\YYY.ps1'”1>“

我使用PSworkflow创建了一个脚本,它从13个vCenter收集VM/许可证/网络/mpp等详细信息,并在csv文件中输出所有详细信息。 当我在正常ps会话(用户交互会话)中手动运行该脚本时,该脚本运行良好,但当触发任务计划程序计划时,提交的PSworkflow作业将自行挂起,并且不会给出其挂起PSWF作业的原因的错误信息

以下是如何在任务调度器中配置它。 -创建了启动powershell脚本的批处理文件。下面是命令 powershell.exe-命令“&'XXX\YYY.ps1'”1>“ZZZ\PPP\u log\uu0%日期:~-10,2%%日期:~-7,2%%日期:~-4,4%.txt“2>&1 -在任务计划程序操作中,提到了要按计划触发的批处理文件

以下是定义工作流的代码::

workflow cons {
    param ($HN,$consec,$OUTPUT_DIR)
    parallel {
        inlinescript { $OUTPUT_DIR=$Using:OUTPUT_DIR
            $HN=$Using:HN
            connect-viserver -Server $HN -Session $Using:consec | out-null
            VMLicense }
        inlinescript { $OUTPUT_DIR=$Using:OUTPUT_DIR
            $HN=$Using:HN
            connect-viserver -Server $HN -Session $Using:consec | out-null
            getdsusage }
        inlinescript { $OUTPUT_DIR=$Using:OUTPUT_DIR
            $HN=$Using:HN
            connect-viserver -Server $Using:HN -Session $Using:consec | out-null
            VMPartInfo }
        inlinescript { $OUTPUT_DIR=$Using:OUTPUT_DIR
            $HN=$Using:HN
            connect-viserver -Server $Using:HN -Session $Using:consec | out-null
            VMNWinfra }
        inlinescript { $OUTPUT_DIR=$Using:OUTPUT_DIR
            $HN=$Using:HN
            connect-viserver -Server $Using:HN -Session $Using:consec | out-null
            mppstate }
        inlinescript { $OUTPUT_DIR=$Using:OUTPUT_DIR
            $HN=$Using:HN
            connect-viserver -Server $Using:HN -Session $Using:consec | out-null
            VMDiskinfra }
        inlinescript { $OUTPUT_DIR=$Using:OUTPUT_DIR
            $HN=$Using:HN
            connect-viserver -Server $Using:HN -Session $Using:consec | out-null
            VMInfo }
        inlinescript { $OUTPUT_DIR=$Using:OUTPUT_DIR
            $HN=$Using:HN
            connect-viserver -Server $Using:HN -Session $Using:consec | out-null
            VMInfra }
        inlinescript { $OUTPUT_DIR=$Using:OUTPUT_DIR
            $HN=$Using:HN
            connect-viserver -Server $Using:HN -Session $Using:consec | out-null
            VMSnapshot }
    }
}
以下是为每个vCenter启动pswf作业的代码:

foreach ($vc in $InputScript) {
$HN=$vc.HN
$User=$vc.User
$Password=$vc.Password
$consec = GetCon    ## "GetCon" is custom function which has just connect-viserver command and its args.#
$job1=$HN.split('.')[0] + '_'  +  (get-date -format yyyyMMddss)
cons -HN $HN -consec $consec -OUTPUT_DIR $OUTPUT_DIR -asjob -JobName $job1
}

get-job | wait-job | export-csv $OUTPUT_DIR\log001.csv -NoTypeInformation
以下是从任务计划程序触发此任务时收到的错误消息:

警告:一个或多个作业处于挂起或断开连接状态,如果没有其他用户输入,则无法继续

指定-Force参数以继续到完成、失败或停止状态。 调用跟踪参与者时出错,导致实例中止。有关详细信息,请参见内部异常 更多细节。 +类别信息:InvalidResult:(:)[],操作取消异常
+FullyQualifiedErrorId:JobStateFailed

我也遇到了相同的错误,有解决方案吗?是的,似乎后台有很多pswf会话处于挂起状态,无论我做了什么,它们在控制台上都不可见。所以,我留下了它,让超时来处理。突然,几天后,它开始工作良好。无论我多么努力地寻找和打电话给这么多人,我都找不到其他解决办法。如果您发现了任何与我的猜测不符的地方,请务必让我知道。我也遇到了相同的错误,有解决方案吗?是的,似乎在后台有很多pswf会话处于挂起状态,无论我做了什么,这些会话在控制台上都不可见。所以,我留下了它,让超时来处理。突然,几天后,它开始工作良好。无论我多么努力地寻找和打电话给这么多人,我都找不到其他解决办法。如果有什么你发现除了我的猜测,那么请让我知道。