Veeam Backup & Replication 11:PowerShell获取任务处理/传输速度属性咨询
Veeam Backup & Replication 11 PowerShell 任务筛选:按处理/传输速度过滤
我正在使用Veeam Backup & Replication 11,当前用以下PowerShell脚本筛选已启用计划且执行成功的任务:
Get-VBRJob | Where-Object {$_.IsScheduleEnabled -eq "$true" -and $_.GetLastResult() -eq "Success"}
现在想进一步按处理速度筛选任务,但尝试多个属性都无效:添加-and $_.Info.Processing没有输出,尝试$_.GetLastResult().DataProcessingSpeed也失败了。请告知可用于获取处理速度的函数/属性,同时提供获取源VM与目标存储库间数据传输速度的属性。
附测试脚本片段:
Connect-VBRServer -Server "Backup-server-IP" #Fetching Success Jobs $SuccessJobs = Get-VBRJob | Where-Object { $_.IsScheduleEnabled -eq "$true" -and $_.GetLastResult() -eq "Success" -and $_.GetLastResult().DataProcessingSpeed -lt 200}
以及GetLastResult()返回对象的成员信息:
Name MemberType Definition ---- ---------- ---------- CompareTo Method int CompareTo(System.Object target), int IComparable.CompareTo(System.Object obj) Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() GetTypeCode Method System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode() HasFlag Method bool HasFlag(System.Enum flag) ToBoolean Method bool IConvertible.ToBoolean(System.IFormatProvider provider) ToByte Method byte IConvertible.ToByte(System.IFormatProvider provider) ToChar Method char IConvertible.ToChar(System.IFormatProvider provider) ToDateTime Method datetime IConvertible.ToDateTime(System.IFormatProvider provider) ToDecimal Method decimal IConvertible.ToDecimal(System.IFormatProvider provider) ToDouble Method double IConvertible.ToDouble(System.IFormatProvider provider) ToInt16 Method int16 IConvertible.ToInt16(System.IFormatProvider provider) ToInt32 Method int IConvertible.ToInt32(System.IFormatProvider provider) ToInt64 Method long IConvertible.ToInt64(System.IFormatProvider provider) ToSByte Method sbyte IConvertible.ToSByte(System.IFormatProvider provider) ToSingle Method float IConvertible.ToSingle(System.IFormatProvider provider) ToString Method string ToString(), string ToString(string format, System.IFormatProvider provider), string ToString(string... ToType Method System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider) ToUInt16 Method uint16 IConvertible.ToUInt16(System.IFormatProvider provider) ToUInt32 Method uint32 IConvertible.ToUInt32(System.IFormatProvider provider) ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider provider) value__ Property int value__ {get;set;}
问题核心说明
GetLastResult()返回的是任务执行状态枚举值(如Success、Failed),并非包含任务统计数据的对象,因此直接访问DataProcessingSpeed必然无效。要获取处理/传输速度,需从任务的会话记录中提取。
可用属性与方法
1. 处理速度(Data Processing Speed)
通过任务的最新会话对象(Get-VBRJobSession)获取,对应属性:
$session.DataProcessingRate:单位为MB/s$session.Progress.DataProcessingRate:与上述属性等价,属于会话进度对象的成员
2. 源VM到目标存储库的传输速度(Data Transfer Speed)
同样从会话对象中提取:
$session.DataTransferRate:单位为MB/s$session.Progress.DataTransferRate:与上述属性等价
修正后的筛选脚本
以下脚本会筛选出已启用计划、执行成功且最新会话处理速度低于200MB/s的任务:
Connect-VBRServer -Server "Backup-server-IP" # 获取符合基础条件的任务 $candidateJobs = Get-VBRJob | Where-Object { $_.IsScheduleEnabled -eq $true -and $_.GetLastResult() -eq "Success" } # 遍历任务,提取最新会话并按处理速度筛选 $filteredJobs = foreach ($job in $candidateJobs) { # 获取任务的最新成功会话 $latestSession = Get-VBRJobSession -Job $job | Where-Object { $_.Result -eq "Success" } | Sort-Object EndTime -Descending | Select-Object -First 1 if ($latestSession -and $latestSession.DataProcessingRate -lt 200) { # 输出任务及对应会话的速度信息 [PSCustomObject]@{ JobName = $job.Name ProcessingSpeed_MBps = $latestSession.DataProcessingRate TransferSpeed_MBps = $latestSession.DataTransferRate LastRunTime = $latestSession.EndTime } } } # 查看结果 $filteredJobs
补充说明
- 若需获取所有历史会话的速度数据,可去掉
Select-Object -First 1,遍历所有成功会话 DataProcessingRate和DataTransferRate默认单位为MB/s,无需额外转换- 部分任务类型(如复制、备份到磁带)的会话属性可能略有差异,可通过
$latestSession | Get-Member查看完整成员
内容的提问来源于stack exchange,提问作者user16753150
相关产品推荐
相关产品推荐

