#Requires -Version 5.1 <# .SYNOPSIS Testet die Verbindung zur Microsoft Graph API. .DESCRIPTION Laedt die Konfiguration und versucht, die letzten 5 E-Mails abzurufen. Dient zur Validierung der Azure App Registration. #> param( [string]$ConfigPath = (Join-Path $PSScriptRoot "..\config") ) $scriptRoot = $PSScriptRoot Import-Module (Join-Path $scriptRoot "Logger.psm1") -Force Import-Module (Join-Path $scriptRoot "GraphHelper.psm1") -Force # Logger initialisieren $logDir = Join-Path (Split-Path $ConfigPath -Parent) "logs" Initialize-Logger -LogDirectory $logDir -Level "Debug" # Settings laden $settingsFile = Join-Path $ConfigPath "settings.json" if (-not (Test-Path $settingsFile)) { Write-Host "FEHLER: $settingsFile nicht gefunden!" -ForegroundColor Red Write-Host "Bitte zuerst die Azure App Registration einrichten." -ForegroundColor Yellow Write-Host "Anleitung: docs\Azure-App-Registration-Anleitung.md" -ForegroundColor Yellow exit 1 } $settings = Get-Content $settingsFile -Raw | ConvertFrom-Json $settingsHash = @{ TenantId = $settings.TenantId ClientId = $settings.ClientId ClientSecret = $settings.ClientSecret MailboxUser = $settings.MailboxUser } Write-Host "`n=== Mail-Organizer Verbindungstest ===" -ForegroundColor Cyan Write-Host "Tenant: $($settings.TenantId)" Write-Host "Client: $($settings.ClientId)" Write-Host "Mailbox: $($settings.MailboxUser)" Write-Host "" # Test 1: Token holen Write-Host "1. Token anfordern... " -NoNewline try { $token = Get-GraphToken -Settings $settingsHash Write-Host "OK" -ForegroundColor Green } catch { Write-Host "FEHLER" -ForegroundColor Red Write-Host " $_" -ForegroundColor Red Write-Host "`nPruefe TenantId, ClientId und ClientSecret in settings.json" -ForegroundColor Yellow exit 1 } # Test 2: E-Mails abrufen Write-Host "2. E-Mails abrufen... " -NoNewline try { $messages = Get-MailMessages -Settings $settingsHash -Top 5 $count = @($messages.value).Count Write-Host "OK ($count E-Mails)" -ForegroundColor Green } catch { Write-Host "FEHLER" -ForegroundColor Red Write-Host " $_" -ForegroundColor Red Write-Host "`nPruefe die API-Berechtigungen (Mail.Read) und Admin Consent" -ForegroundColor Yellow exit 1 } # Ergebnis anzeigen if ($count -gt 0) { Write-Host "`nLetzte E-Mails:" -ForegroundColor Cyan foreach ($msg in $messages.value) { $date = ([DateTime]$msg.receivedDateTime).ToString("dd.MM.yyyy HH:mm") $from = $msg.from.emailAddress.address $cats = if ($msg.categories) { " [$($msg.categories -join ', ')]" } else { "" } Write-Host " $date | $from | $($msg.subject)$cats" } } Write-Host "`n=== Verbindungstest erfolgreich! ===" -ForegroundColor Green Write-Host "Du kannst jetzt Regeln in config\rules.json anlegen." Write-Host "Starte mit: .\Process-MailRules.ps1 -DryRun`n"