# Explore GeViSoft Database Structure $ErrorActionPreference = "Stop" $dbPath = "C:\GEVISOFT\DATABASE\GeViDB.mdb" Write-Host "========================================" -ForegroundColor Cyan Write-Host "Exploring GeViSoft Database" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "" Write-Host "Database: $dbPath" -ForegroundColor Gray Write-Host "" # Create ADODB connection $conn = New-Object -ComObject ADODB.Connection $connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$dbPath;Persist Security Info=False;Mode=Share Deny None;" try { $conn.Open($connectionString) Write-Host "[OK] Connected to database" -ForegroundColor Green Write-Host "" # Get list of tables $schema = $conn.OpenSchema(20) # adSchemaTables = 20 $tables = @() while (-not $schema.EOF) { $tableName = $schema.Fields.Item("TABLE_NAME").Value $tableType = $schema.Fields.Item("TABLE_TYPE").Value if ($tableType -eq "TABLE") { $tables += $tableName } $schema.MoveNext() } $schema.Close() Write-Host "Found $($tables.Count) tables:" -ForegroundColor Cyan Write-Host "" # Look for tables related to alarms, actions, mappings $relevantTables = $tables | Where-Object { $_ -like "*alarm*" -or $_ -like "*action*" -or $_ -like "*mapping*" -or $_ -like "*event*" -or $_ -like "*rule*" } | Sort-Object if ($relevantTables.Count -gt 0) { Write-Host "Relevant tables (alarms/actions/mappings):" -ForegroundColor Yellow foreach ($table in $relevantTables) { # Get row count $rs = $conn.Execute("SELECT COUNT(*) AS cnt FROM [$table]") $count = $rs.Fields.Item("cnt").Value $rs.Close() Write-Host " - $table ($count records)" -ForegroundColor White } Write-Host "" } Write-Host "All tables:" -ForegroundColor Yellow $tables | Sort-Object | ForEach-Object { # Get row count try { $rs = $conn.Execute("SELECT COUNT(*) AS cnt FROM [$_]") $count = $rs.Fields.Item("cnt").Value $rs.Close() Write-Host " - $_ ($count records)" -ForegroundColor Gray } catch { Write-Host " - $_ (error reading)" -ForegroundColor DarkGray } } } catch { Write-Host "[ERROR] Failed to connect: $($_.Exception.Message)" -ForegroundColor Red Write-Host "" Write-Host "You may need to install the Microsoft Access Database Engine:" -ForegroundColor Yellow Write-Host " https://www.microsoft.com/en-us/download/details.aspx?id=54920" -ForegroundColor Cyan } finally { if ($conn.State -ne 0) { $conn.Close() } } Write-Host "" Write-Host "========================================" -ForegroundColor Cyan