@@ -172,45 +172,46 @@ function Export-sqmDatabaseDocumentation
172172<title>$Title </title>
173173<style>
174174*{box-sizing:border-box;margin:0;padding:0}
175- body{font-family:'Segoe UI',system-ui,sans-serif;background:#f0f4f8 ;color:#1e293b ;font-size:13px}
176- .page-header{background:#1a3a5c;color:#fff ;padding:24px 32px}
177- .page-header h1{font-size:1.5rem;font-weight:900;letter-spacing:-.03em}
178- .page-header .sub{font-size:.82rem;opacity:.7 ;margin-top:4px }
179- .toc{background:#fff ;border-bottom :1px solid #dde4ee; padding:10px 32px ;display:flex;gap:6px;flex-wrap:wrap}
180- .toc a{font-size:.75rem;color:#2563a8 ;text-decoration:none;background:#eff6ff ;border-radius:12px;padding:2px 10px}
181- .toc a:hover{background:#dbeafe }
182- .main{max-width:1200px ;margin:0 auto;padding:28px 24px}
183- .db-section{background:#fff ;border:1px solid #dde4ee ;border-radius:10px;margin-bottom:28px ;overflow:hidden}
184- .db-header{background:#1a3a5c;color:#fff; padding:14px 20px;display:flex;align-items:center;justify-content:space-between}
185- .db-header h2{font-size:1rem;font-weight:800;letter-spacing:-.02em}
186- .db-header .db-status{font-size:.7rem;font-weight:700;padding:2px 8px ;border-radius:10px;background:rgba(255,255,255,.15) }
187- .db-header .db-status.ok{background:#d1fae5 ;color:#064e3b }
188- .db-header .db-status.warn{background:#fef3c7 ;color:#92400e }
189- .db-header .db-status.crit{background:#fde8e8 ;color:#991b1b }
175+ body{font-family:'Segoe UI',system-ui,sans-serif;background:#0f172a ;color:#e2e8f0 ;font-size:13px}
176+ .page-header{background:linear-gradient(160deg,#1e3a8a 0%,#2e5090 100%) ;padding:30px 32px;border-left:4px solid #3b82f6;margin-bottom:24px }
177+ .page-header h1{font-size:1.5rem;font-weight:900;color:#60a5fa; letter-spacing:-.03em}
178+ .page-header .sub{font-size:.82rem;color:#94a3b8 ;margin-top:6px }
179+ .toc{background:#0b1e3d ;border:1px solid #1e3a5f;border-radius:8px; padding:12px 20px;margin:0 24px 24px ;display:flex;gap:6px;flex-wrap:wrap}
180+ .toc a{font-size:.75rem;color:#7dd3fc ;text-decoration:none;background:#1e3a5f ;border-radius:12px;padding:2px 10px}
181+ .toc a:hover{background:#2d5a8c;color:#bae6fd }
182+ .main{max-width:1400px ;margin:0 auto;padding:0 24px 40px }
183+ .db-section{background:#0b1e3d ;border:1px solid #1e3a5f ;border-radius:10px;margin-bottom:24px ;overflow:hidden}
184+ .db-header{background:#1e3a8a; padding:14px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #3b82f6 }
185+ .db-header h2{font-size:1rem;font-weight:800;color:#60a5fa; letter-spacing:-.02em}
186+ .db-header .db-status{font-size:.7rem;font-weight:700;padding:2px 10px ;border-radius:10px}
187+ .db-header .db-status.ok{background:rgba(52,211,153,.15) ;color:#34d399;border:1px solid #34d399 }
188+ .db-header .db-status.warn{background:rgba(245,158,11,.15) ;color:#f59e0b;border:1px solid #f59e0b }
189+ .db-header .db-status.crit{background:rgba(239,68,68,.15) ;color:#ef4444;border:1px solid #ef4444 }
190190.db-body{padding:16px 20px}
191191.section-block{margin-bottom:18px}
192- .section-block h3{font-size:.78rem;font-weight:700;color:#2563a8 ;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid #e2e8f0 ;padding-bottom:5px;margin-bottom:10px}
193- .props-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px 16px}
192+ .section-block h3{font-size:.78rem;font-weight:700;color:#60a5fa ;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid #1e3a5f ;padding-bottom:5px;margin-bottom:10px}
193+ .props-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px 16px}
194194.prop{display:flex;flex-direction:column}
195195.prop .lbl{font-size:.68rem;color:#64748b;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
196- .prop .val{font-size:.82rem;color:#1e293b ;font-weight:500;margin-top:1px}
197- .prop .val.warn{color:#92400e ;font-weight:700}
198- .prop .val.ok{color:#064e3b }
199- table{width:100%;border-collapse:collapse;font-size:.78rem}
200- table th{background:#f0f4f8 ;color:#1e293b ;padding:5px 10px;text-align:left;font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid #dde4ee }
201- table td{padding:5px 10px;border-bottom:1px solid #e8edf4 ;vertical-align:top}
202- table tr:hover td{background:#f8fafc }
196+ .prop .val{font-size:.82rem;color:#e2e8f0 ;font-weight:500;margin-top:1px}
197+ .prop .val.warn{color:#f59e0b ;font-weight:700}
198+ .prop .val.ok{color:#34d399 }
199+ table{width:100%;border-collapse:collapse;font-size:.78rem;background:#071428;border-radius:6px;overflow:hidden }
200+ table th{background:#1e3a8a ;color:#60a5fa ;padding:7px 10px;text-align:left;font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid #3b82f6 }
201+ table td{padding:6px 10px;border-bottom:1px solid #1e3a5f;color:#e2e8f0 ;vertical-align:top}
202+ table tr:hover td{background:#0f2744 }
203203.badge{display:inline-block;font-size:.65rem;font-weight:700;padding:1px 7px;border-radius:9px;text-transform:uppercase;letter-spacing:.04em}
204- .badge-full{background:#d1fae5;color:#064e3b}
205- .badge-simple{background:#f3e8ff;color:#6b21a8}
206- .badge-bulk{background:#fef3c7;color:#92400e}
207- .footer{text-align:center;font-size:.72rem;color:#94a3b8;padding:20px;border-top:1px solid #dde4ee}
204+ .badge-full{background:rgba(52,211,153,.15);color:#34d399;border:1px solid #34d399}
205+ .badge-simple{background:rgba(167,139,250,.15);color:#a78bfa;border:1px solid #a78bfa}
206+ .badge-bulk{background:rgba(245,158,11,.15);color:#f59e0b;border:1px solid #f59e0b}
207+ .footer{text-align:center;font-size:.72rem;color:#475569;padding:24px;border-top:1px solid #1e3a5f;margin-top:16px}
208+ .footer a{color:#5dade2}
208209</style>
209210</head>
210211<body>
211212<div class="page-header">
212213 <h1>📊 Datenbank-Dokumentation</h1>
213- <div class="sub">Instanz: $Instance ? Erstellt: $Timestamp </div>
214+ <div class="sub">Instanz: $Instance • Erstellt: $Timestamp </div>
214215</div>
215216"@
216217 }
@@ -367,11 +368,19 @@ GROUP BY s.database_id;
367368
368369 # CSV-Zeilen-Liste
369370 $csvRows = [System.Collections.Generic.List [PSCustomObject ]]::new()
370-
371+
371372 # ?? Pro Datenbank ????????????????????????????????????????????????
372- foreach ($db in ($filteredDbs | Sort-Object Name))
373+ $sortedDbs = @ ($filteredDbs | Sort-Object Name)
374+ $totalDbs = $sortedDbs.Count
375+ $dbIndex = 0
376+
377+ foreach ($db in $sortedDbs )
373378 {
379+ $dbIndex ++
374380 $dbName = $db.Name
381+ Write-Progress - Activity " Export-sqmDatabaseDocumentation [$instance ]" `
382+ - Status " [$dbIndex /$totalDbs ] $dbName " `
383+ - PercentComplete ([math ]::Round($dbIndex / $totalDbs * 100 ))
375384 Invoke-sqmLogging - Message " [$instance ] Dokumentiere Datenbank '$dbName ' ..." - FunctionName $functionName - Level " INFO"
376385
377386 try
0 commit comments