.net PowerShell工作流在通过任务计划程序中的计划作业运行时自行挂起
我使用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 -在任务计划程序操作中,提到了要按计划触发的批处理文件 以下是定义工作流的代码::.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>“
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会话处于挂起状态,无论我做了什么,这些会话在控制台上都不可见。所以,我留下了它,让超时来处理。突然,几天后,它开始工作良好。无论我多么努力地寻找和打电话给这么多人,我都找不到其他解决办法。如果有什么你发现除了我的猜测,那么请让我知道。