如何通过PowerCLI获取vCenter对象关联的所有任务(vSphere 6.7环境)
PowerCLI 获取vCenter指定资源关联所有任务方法
Get-Task本身的设计定位仅用于获取vCenter近期任务队列内的任务,也就是HTML5客户端「Recent Tasks」视图展示的内容,本身不支持查询指定资源的历史关联任务,也不支持管道传入资源对象。你需要通过Get-VIEvent筛选任务类型事件的方式获取对应数据,vCenter中所有任务的完整执行记录都会以TaskEvent类型的事件存储,和UI「Monitor」标签页展示的任务数据完全一致。
具体实现代码
以你提到的查询指定数据存储文件夹关联任务为例:
# 1. 获取目标资源对象(支持替换为虚拟机、主机、集群等任意vCenter资源对象) $targetRes = Get-Folder "FOLDER_NAME" -Type Datastore # 2. 查询该资源关联的所有事件,过滤出任务类型事件,MaxSamples可按需调整查询的最大条目数 $resTasks = Get-VIEvent -Entity $targetRes -MaxSamples 10000 | Where-Object { $_ -is [VMware.Vim.TaskEvent] } # 3. 输出任务关键信息示例 $resTasks | Select-Object ` CreatedTime, UserName, @{Name="操作类型";Expression={$_.Info.Name}}, @{Name="任务状态";Expression={$_.Info.State}}, FullFormattedMessage | Format-Table -AutoSize
额外说明
- 若需要查询全量历史任务,可将
-MaxSamples参数值设置为[int]::MaxValue - 如需获取任务的完整执行细节、参数、报错信息等,可直接访问事件对象的
Info属性,例如$resTasks[0].Info即可查看单条任务的全部元数据 - 该方法适用于所有vCenter资源类型的关联任务查询,不局限于文件夹
内容的提问来源于stack exchange,提问作者codewario
相关产品推荐
相关产品推荐

