I wrote a simple script to run full deduplication. It is handy when you need one-time deduplication including garbage collection and scrubbing job.
$ErrorActionPreference = 'Stop'
Function Wait-RvDedupJob
{
Write-Warning -Message 'Wait for all jobs to finish'
while (Get-DedupJob -ErrorAction SilentlyContinue)
{
Start-Sleep -Seconds 10
}
}
Get-DedupVolume | ForEach-Object -Process `
{
$_.Volume
Wait-RvDedupJob
$_ | Start-DedupJob -Type Optimization -Priority Normal -Memory 50 -OutVariable job
Wait-RvDedupJob
$_ | Start-DedupJob -Type GarbageCollection -Priority Normal -Memory 50 -Full -OutVariable job
Wait-RvDedupJob
$_ | Start-DedupJob -Type Scrubbing -Priority Normal -Memory 50 -Full -OutVariable job
Wait-RvDedupJob
}
Get-DedupStatus |
Format-Table -Property Volume,
@{ Expression = { $_.LastOptimizationTime }; Label = 'OptT' },
@{ Expression = { $_.LastOptimizationResult }; Label = 'OptR' },
@{ Expression = { $_.LastOptimizationResultMessage.Substring(0, 10) }; Label = 'OptRM' },
@{ Expression = { $_.LastGarbageCollectionTime }; Label = 'ColT' },
@{ Expression = { $_.LastGarbageCollectionResult }; Label = 'ColR' },
@{ Expression = { $_.LastGarbageCollectionResultMessage.Substring(0, 10) }; Label = 'ColRM' },
@{ Expression = { $_.LastScrubbingTime }; Label = 'ScrT' },
@{ Expression = { $_.LastScrubbingResult }; Label = 'ScrR' },
@{ Expression = { $_.LastScrubbingResultMessage.Substring(0, 10) }; Label = 'ScrRM' } -AutoSize
