.net - PowerShell 工作流在通过任务计划程序中的计划作业运行时自行挂起
问题描述
我使用 PSworkflow 创建了一个脚本,该脚本从 13 个 VCenter 收集 VM/license/network/mpp 等详细信息,并在 csv 文件中输出所有详细信息。当我在正常的 ps 会话(用户交互会话)中手动运行该脚本时,该脚本运行良好,但是当触发任务调度程序计划时,提交的 PSworkflow 作业会自行暂停,并且不会给出关于暂停 PSWF 作业的原因的错误。
这是它在任务调度程序中的配置方式。- 创建了一个启动 powershell 脚本的批处理文件。下面是命令powershell.exe -Command "& 'XXX\YYY.ps1'" 1>"ZZZ\PPP_log_%date:~-10,2%%date:~-7,2%%date:~-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 }
}
}
下面是为每个 VCenters::: 启动 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 参数以继续完成、失败或停止状态。调用跟踪参与者时发生错误,导致实例中止。有关更多详细信息,请参阅内部异常。+ CategoryInfo : InvalidResult: (:) [], OperationCanceledException + FullyQualifiedErrorId : JobStateFailed