Zertifikat verarbei...
 
Benachrichtigungen
Alles löschen

[Gelöst] Zertifikat verarbeitet nicht

3 Beiträge
2 Benutzer
0 Reactions
7 Ansichten
Judge
(@judge)
Estimable Member
Beigetreten: Vor 6 Jahren
Beiträge: 129
Themenstarter  

Hallo,
ich habe folgendes Skript gebastelt. Leider funktioniert es nicht richtig. Wenn eine neue Datei auftaucht, bekomme ich folgende Fehlermeldung: 2025-11-21 07:39:08 [INFO] Neue Datei erkannt:
2025-11-21 07:39:14 [ERROR] FEHLER bei Verarbeitung von - Ausnahme beim Aufrufen von ".ctor" mit 1 Argument(en): "Der Wert darf nicht NULL sein.
Parametername: cert"

Leider kann ich nicht sagen, wodurch der Fehler kommt.

Kann jemnad helfen?

Gruß

>>> Einstellungen <<<

$WatchPath = "\\192.168.102.130\certexpo\geant"
$LogFile = "\\192.168.102.130\certexpo\Logs\ZertImport.log"

# >>> Logging-Funktion <<<

function Write-Log {
param(
[string]$Message,
[string]$Level = "INFO"
)

$ts = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$line = "$ts [$Level] $Message"

Write-Host $line
Add-Content -Path $LogFile -Value $line

}

# >>> Exchange Online verbinden <<<

try {
if (-not (Get-Module -ListAvailable -Name ExchangeOnlineManagement)) {
Install-Module ExchangeOnlineManagement -Force
}

Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline

Write-Log "Verbindung zu Exchange Online hergestellt."

}
catch {
Write-Log "FEHLER bei ExO-Anmeldung: $_" "ERROR"
throw
}

# >>> Ordnerüberwachung einrichten <<<

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $WatchPath
$watcher.Filter = "*.pem"
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true

# >>> Falls Event bereits existiert: deregistrieren <<<

Unregister-Event -SourceIdentifier "PemFileFound" -ErrorAction SilentlyContinue

# >>> Event-Handler registrieren <<<
Register-ObjectEvent $watcher Created -SourceIdentifier "PemFileFound" -Action {

$file = $Event.FullPath

Start-Sleep -Seconds 1
Write-Log "Neue Datei erkannt: $file"

# ===========================
# Desktop-Benachrichtigung
# ===========================
New-BurntToastNotification -Text "Neue Zertifikatsdatei erkannt", $file

# Warten, bis Datei nutzbar ist
for ($i = 1; $i -le 10; $i++) {
try {
$stream = [System.IO.File]::Open($file, "Open", "Read", "None")
if ($stream) { $stream.Close(); break }
}
catch { Start-Sleep -Milliseconds 500 }
}

try {
# Zertifikat laden
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($file)

# CN extrahieren und Umlaute korrigieren
$cn = $cert.Subject `
-replace '.*CN=([^,]+).*','$1' `
-replace 'oe','ö' `
-replace 'ae','ä' `
-replace 'ue','ü'

Write-Log "CN identifiziert: $cn"

# Zertifikat zuweisen
Set-Mailbox -Identity $cn -UserCertificate (,$cert.GetRawCertData())

Write-Log "Zertifikat erfolgreich zugewiesen."

# ===============================
# Datei nach "verarbeitet" verschieben
# ===============================
$ProcessedPath = "\\192.168.102.130\certexpo\verarbeitet"

if (!(Test-Path $ProcessedPath)) {
New-Item -ItemType Directory -Path $ProcessedPath | Out-Null
Write-Log "Zielordner angelegt: $ProcessedPath"
}

Move-Item -Path $file -Destination $ProcessedPath -Force
Write "Datei verschoben nach: $ProcessedPath"
}
catch {
Write-Log "FEHLER bei Verarbeitung von $file - $_" "ERROR"
}
```
}

Write-Log "Ordnerüberwachung aktiv. Skript läuft. Strg+C zum Beenden."
try {
while ($true) {
Wait-Event -Timeout 5 | Out-Null
}
}
finally {
Write-Host "Watcher wird beendet…"
Unregister-Event -SourceIdentifier "PemFileFound" -ErrorAction SilentlyContinue
$watcher.Dispose()
}



   
Zitat
Judge
(@judge)
Estimable Member
Beigetreten: Vor 6 Jahren
Beiträge: 129
Themenstarter  

Hallo,

Fehler gefunden:

Veröffentlicht von: @judge

# >>> Event-Handler registrieren <<<
Register-ObjectEvent $watcher Created -SourceIdentifier "PemFileFound" -Action {

$file = $Event.FullPath

Hier muss folgendes rein:

$file = $Event.SourceEventArgs.FullPath


   
AntwortZitat




NorbertFe
(@norbertfe)
Beigetreten: Vor 5 Jahren
Beiträge: 1861
 

Nur noch als Hinweis, dass die Verwendung von IP Adressen in UNC Pfaden automatisch NTLM Authentifizierung bedeutet. In Zeiten in denen man versucht davon wegzukommen, sollte man evtl. darauf achten, sich nicht selbst solche Stolperfallen einzurichten. ;)

 

Bis dann

Norbert



   
AntwortZitat
Teilen: