filter Get-StreamPSObject { if(($a = $_ -split ':')[-2]){ New-Object PSObject -Property @{ Stream = $a[-2]; Length = [int]$($a[0] -replace '^(\d+) ?(\d*)[^\n]*','$1$2') } } } filter Get-Stream { $backupItem = $_ switch ($_.GetType().Name) { 'DirectoryInfo' { $folder = $backupItem.FullName $tempfile = New-TemporaryFile Start-Process -FilePath 'cmd' -ArgumentList ('/c','dir','/ad/r',"$folder") -RedirectStandardOutput $tempfile.FullName (($tempfile | Get-Content).trim() | Select-String -Pattern '\d+ +\.:[^:]+:\$data').Line | Get-StreamPSObject $tempfile | Remove-Item } 'FileInfo' { Get-Item -LiteralPath $backupItem.fullname -stream * | Where Stream -ne ':$data' } } } |