重複資料刪除狀態集合規則

Microsoft.SystemCenter.DataProtectionManager.DedupReporter.6.3.Volume.CollectDedupData (Rule)

Knowledge Base article:

重複資料刪除狀態資料集合規則

重複資料刪除狀態資料集合規則

Element properties:

TargetMicrosoft.SystemCenter.DataProtectionManager.DedupReporter.6.3.Volume
CategoryEventCollection
EnabledTrue
Alert GenerateFalse
RemotableTrue

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.TimedScript.EventProvider Default
BulkWA1 WriteAction Microsoft.SystemCenter.DataProtectionManager.DedupReporter.6.3.DW.WA.XmlBulkInsertModule Default

Source Code:

<Rule ID="Microsoft.SystemCenter.DataProtectionManager.DedupReporter.6.3.Volume.CollectDedupData" Enabled="true" Target="Microsoft.SystemCenter.DataProtectionManager.DedupReporter.6.3.Volume" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.EventProvider">
<IntervalSeconds>86400</IntervalSeconds>
<SyncTime/>
<ScriptName>Dedup62.CollectDedupData.vbs</ScriptName>
<Arguments>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</Arguments>
<ScriptBody><Script>
Option Explicit
SetLocale("en-us")
Dim e: set e = New Error
Dim computerName: computerName = WScript.Arguments(0)

On Error Resume Next
Dim omAPI: Set omAPI = CreateObject("MOM.ScriptAPI")
e.Save
On Error Goto 0

If IsEmpty(omAPI) or e.Number &lt;&gt; 0 Then
WScript.Quit
End If

Dim oWMI
On Error Resume Next
set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate, authenticationLevel=pktPrivacy}!\\" &amp; computerName &amp; "\root\Microsoft\Windows\Deduplication")
e.Save
On Error Goto 0


If Not(IsEmpty(oWMI)) Then
On Error Resume Next
Dim dedupVolumes: Set dedupVolumes = oWMI.ExecQuery("SELECT VolumeId, Volume, LastOptimizationTime, LastGarbageCollectionTime, LastScrubbingTime, OptimizedFilesCount, OptimizedFilesSize, InPolicyFilesCount, InPolicyFilesSize, SavingsRate, SavedSpace from MSFT_DedupVolumeStatus")
Dim dedupVolume, omBag
Dim lastRunTime: Set lastRunTime = CreateObject ("WbemSCripting.SWbemDateTime")
For Each dedupVolume in dedupVolumes
Set omBag= omAPI.CreatePropertyBag()
Call omBag.AddValue("ComputerName", computerName)
Call omBag.AddValue("VolumeId", dedupVolume.VolumeId)
Call omBag.AddValue("Volume", dedupVolume.Volume)
If dedupVolume.LastOptimizationTime &lt;&gt; "null" Then
lastRunTime.Value = dedupVolume.LastOptimizationTime
call omBag.AddValue("DaysSinceLastOptimization", DateDiff("d",lastRunTime.GetVarDate, Now))
Else
call omBag.AddValue("DaysSinceLastOptimization", -1)
End If
If dedupVolume.LastGarbageCollectionTime &lt;&gt; "null" Then
lastRunTime.Value = dedupVolume.LastGarbageCollectionTime
call omBag.AddValue("DaysSinceLastGarbageCollection", DateDiff("d",lastRunTime.GetVarDate, Now))
Else
call omBag.AddValue("DaysSinceLastGarbageCollection", -1)
End If
If dedupVolume.LastScrubbingTime &lt;&gt; "null" Then
lastRunTime.Value = dedupVolume.LastScrubbingTime
call omBag.AddValue("DaysSinceLastScrubbing", DateDiff("d",lastRunTime.GetVarDate, Now))
Else
call omBag.AddValue("DaysSinceLastScrubbing", -1)
End If
Call omBag.AddValue("OptimizedFilesCount", dedupVolume.OptimizedFilesCount)
Call omBag.AddValue("OptimizedFilesSize", dedupVolume.OptimizedFilesSize)
Call omBag.AddValue("InPolicyFilesCount", dedupVolume.InPolicyFilesCount)
Call omBag.AddValue("InPolicyFilesSize", dedupVolume.InPolicyFilesSize)
If dedupVolume.InPolicyFilesCount &gt; 0 Then
Call omBag.AddValue("DedupCompletionPercent", dedupVolume.OptimizedFilesCount / dedupVolume.InPolicyFilesCount * 100)

Else
Call omBag.AddValue("DedupCompletionPercent", 0)
End If
Call omBag.AddValue("SavingsRate", dedupVolume.SavingsRate)
Call omBag.AddValue("SavedSpace", dedupVolume.SavedSpace)
omAPI.AddItem(omBag)
Next
On Error Goto 0
Call omAPI.ReturnItems()

End If


Class Error
Public Description
Public Number
Public Source

Sub Class_Initialize()
Number = 0
End Sub

Sub Save
Description = Err.Description
Number = Err.Number
Source = Err.Source
Err.Clear
End Sub

Sub Raise(strDescription)
Err.Raise Number, Source, strDescription &amp; GetErrorString(Number, Description)
End Sub
End Class
</Script></ScriptBody>
<TimeoutSeconds>60</TimeoutSeconds>
<EventOriginId>$MPElement$</EventOriginId>
<PublisherId>$MPElement$</PublisherId>
<PublisherName>CustomScript</PublisherName>
<Channel>CustomScript</Channel>
<LoggingComputer>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</LoggingComputer>
<EventNumber>555</EventNumber>
<EventCategory>0</EventCategory>
<EventLevel>4</EventLevel>
<UserName/>
<Params/>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="BulkWA1" TypeID="Microsoft.SystemCenter.DataProtectionManager.DedupReporter.6.3.DW.WA.XmlBulkInsertModule" Target="SCDW!Microsoft.SystemCenter.DataWarehouseConnectorServer">
<spname>FS.DedupStatusInsert</spname>
</WriteAction>
</WriteActions>
</Rule>