Files
claudetools/clients/dataforth/scripts/investigate-sync-errors.ps1
Mike Swanson 5cbd49ce24 Reorganize repo: compartmentalize scripts by client/project
Move 150+ scripts from root and scripts/ into client/project directories:
- clients/dataforth/scripts/ (110 files: AD2, sync, SSH, DB, DOS scripts)
- clients/bg-builders/scripts/ (14 files: Lesley mgmt, Exchange, termination)
- clients/internal-infrastructure/scripts/ (10 files: GDAP, Gitea, backups)
- projects/msp-tools/scripts/ (9 files: CIPP, MSP onboarding, Datto)
- projects/gururmm-agent/scripts/ (3 files: API test, JWT, record counts)
- clients/glaztech/scripts/ (1 file: CentraStage removal)

Also reorganized:
- VPN scripts → infrastructure/vpn-configs/
- Retrieved API/JS files → api/
- Forum posts → projects/community-forum/forum-posts/
- SSH docs → clients/internal-infrastructure/docs/
- NWTOC/CTONW docs → projects/wrightstown-smarthome/docs/
- ACG website files → projects/internal/acg-website-2025/
- Dataforth docs → clients/dataforth/docs/
- schema-retrieved.sql → docs/database/

Deleted 24 tmp_*.ps1 one-off debug scripts (preserved in git history).
Root reduced from 220+ files to 62 items (docs + directories only).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 17:15:07 -07:00

134 lines
5.8 KiB
PowerShell

# Investigate Dataforth Sync Errors on AD2
Write-Host "=== Investigating Dataforth Sync Errors ===" -ForegroundColor Cyan
Write-Host ""
# Setup admin credentials for AD2
$password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("INTRANET\sysadmin", $password)
Write-Host "Connecting to AD2 and analyzing sync logs..." -ForegroundColor Yellow
Write-Host ""
Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
$logFile = "C:\Shares\test\scripts\sync-from-nas.log"
$statusFile = "C:\Shares\test\_SYNC_STATUS.txt"
Write-Host "[1] Current Sync Status" -ForegroundColor Yellow
Write-Host "=" * 60 -ForegroundColor Gray
if (Test-Path $statusFile) {
Get-Content $statusFile
} else {
Write-Host "Status file not found" -ForegroundColor Red
}
Write-Host ""
Write-Host "[2] Log File Information" -ForegroundColor Yellow
Write-Host "=" * 60 -ForegroundColor Gray
if (Test-Path $logFile) {
$file = Get-Item $logFile
Write-Host "File: $($file.FullName)" -ForegroundColor White
Write-Host "Size: $([math]::Round($file.Length / 1MB, 2)) MB" -ForegroundColor White
Write-Host "Last Modified: $($file.LastWriteTime)" -ForegroundColor White
Write-Host "Lines: $((Get-Content $logFile).Count)" -ForegroundColor White
} else {
Write-Host "Log file not found: $logFile" -ForegroundColor Red
return
}
Write-Host ""
Write-Host "[3] Analyzing Errors (last 1000 lines)" -ForegroundColor Yellow
Write-Host "=" * 60 -ForegroundColor Gray
# Read last 1000 lines to analyze recent errors
$recentLines = Get-Content $logFile -Tail 1000
# Count error types
$errors = $recentLines | Select-String -Pattern "ERROR|Error|error|FAIL|Failed|failed"
$warnings = $recentLines | Select-String -Pattern "WARNING|Warning|warning"
Write-Host "Total Error Lines (last 1000): $($errors.Count)" -ForegroundColor $(if ($errors.Count -gt 0) { "Red" } else { "Green" })
Write-Host "Total Warning Lines (last 1000): $($warnings.Count)" -ForegroundColor $(if ($warnings.Count -gt 0) { "Yellow" } else { "Green" })
Write-Host ""
if ($errors.Count -gt 0) {
Write-Host "[4] Error Breakdown" -ForegroundColor Yellow
Write-Host "=" * 60 -ForegroundColor Gray
# Analyze common error patterns
$errorPatterns = @{
"No such file" = "No such file|not found|cannot find"
"Permission denied" = "Permission denied|Access denied|Access is denied"
"Connection" = "Connection|connect|timeout"
"File in use" = "being used|in use|locked"
"SSH/SCP" = "ssh|scp|plink|pscp"
}
foreach ($pattern in $errorPatterns.Keys) {
$count = ($errors | Select-String -Pattern $errorPatterns[$pattern]).Count
if ($count -gt 0) {
Write-Host " $pattern`: $count" -ForegroundColor Red
}
}
Write-Host ""
Write-Host "[5] Sample Errors (last 15)" -ForegroundColor Yellow
Write-Host "=" * 60 -ForegroundColor Gray
$errors | Select-Object -Last 15 | ForEach-Object {
# Remove timestamp and show just the error
$line = $_.Line -replace '^\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\s+:\s+', ''
Write-Host " $line" -ForegroundColor Red
}
Write-Host ""
}
Write-Host "[6] Recent Sync Activity (last 10 operations)" -ForegroundColor Yellow
Write-Host "=" * 60 -ForegroundColor Gray
$recentLines | Select-String -Pattern "Pushed:|Pulled:|Deleted:" | Select-Object -Last 10 | ForEach-Object {
Write-Host " $($_.Line)" -ForegroundColor Gray
}
Write-Host ""
Write-Host "[7] Today's Summary" -ForegroundColor Yellow
Write-Host "=" * 60 -ForegroundColor Gray
$today = Get-Date -Format "yyyy-MM-dd"
$todayLines = $recentLines | Where-Object { $_ -like "*$today*" }
if ($todayLines) {
$todayPush = ($todayLines | Select-String -Pattern "Pushed:").Count
$todayPull = ($todayLines | Select-String -Pattern "Pulled:").Count
$todayDelete = ($todayLines | Select-String -Pattern "Deleted:").Count
$todayErrors = ($todayLines | Select-String -Pattern "ERROR|Error|error|FAIL").Count
Write-Host " Files Pushed: $todayPush" -ForegroundColor Green
Write-Host " Files Pulled: $todayPull" -ForegroundColor Green
Write-Host " Files Deleted: $todayDelete" -ForegroundColor Cyan
Write-Host " Errors: $todayErrors" -ForegroundColor $(if ($todayErrors -gt 0) { "Red" } else { "Green" })
} else {
Write-Host " No activity logged for today ($today)" -ForegroundColor Yellow
}
Write-Host ""
Write-Host "[8] Script Status" -ForegroundColor Yellow
Write-Host "=" * 60 -ForegroundColor Gray
$scriptPath = "C:\Shares\test\scripts\Sync-FromNAS.ps1"
if (Test-Path $scriptPath) {
$script = Get-Item $scriptPath
Write-Host " Script: $($script.Name)" -ForegroundColor White
Write-Host " Last Modified: $($script.LastWriteTime)" -ForegroundColor White
# Check if scheduled task exists
$task = Get-ScheduledTask -TaskName "Sync-FromNAS" -ErrorAction SilentlyContinue
if ($task) {
Write-Host " Scheduled Task: Enabled" -ForegroundColor Green
Write-Host " Task Status: $($task.State)" -ForegroundColor White
Write-Host " Last Run: $($task.LastRunTime)" -ForegroundColor White
Write-Host " Next Run: $($task.NextRunTime)" -ForegroundColor White
} else {
Write-Host " Scheduled Task: Not found" -ForegroundColor Red
}
}
}
Write-Host ""
Write-Host "=== Investigation Complete ===" -ForegroundColor Cyan