$ErrorActionPreference = 'SilentlyContinue' $svc = Get-Service | Where-Object { $_.DisplayName -match 'Online Backup|CloudBerry|MSP360' } $svc | Format-Table Name, DisplayName, Status -AutoSize $roots = @('C:\ProgramData\Online Backup','C:\ProgramData\CloudBerryLab','C:\ProgramData\CloudBerry Backup') foreach ($r in $roots) { if (Test-Path $r) { Write-Output "=== ROOT: $r ===" $logs = Get-ChildItem $r -Recurse -Depth 2 -Filter *.log | Sort-Object LastWriteTime -Descending | Select-Object -First 3 foreach ($l in $logs) { Write-Output "--- LOG: $($l.FullName) ($($l.LastWriteTime)) ---" Get-Content $l.FullName -Tail 40 | Where-Object { $_ -match 'ERROR|WARN|Exchange|Failed|denied' } | Select-Object -Last 25 } } } Write-Output '=== Exchange services ===' Get-Service | Where-Object { $_.Name -like 'MSExchange*' } | Select-Object -First 10 Name, Status | Format-Table -AutoSize Write-Output '=== VSS writers (Exchange) ===' vssadmin list writers | Select-String -Context 0,4 'Exchange'