86 lines
2.8 KiB
PowerShell
86 lines
2.8 KiB
PowerShell
#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"
|