EulandaXtools — Funktionsreferenz
Erstellt eine temporäre Kopie einer Datei mit kurzem Pfad und führt eine Aktion mit dieser Kopie aus (z. B. für Mail-Anhänge), damit nachgelagerte Befehle nicht an langen Dateipfaden scheitern.
Invoke-ShortTempAttachment [-SourceFile] <string> [-Action] <scriptblock>Invoke-ShortTempAttachment kopiert die Datei aus -SourceFile in einen Unterordner von $env:TEMP (z. B. %TEMP%\EulandaMail) und erzeugt dabei bewusst einen kurzen Dateinamen (Basename wird bei Bedarf gekürzt, die Erweiterung bleibt erhalten). Anschließend wird der Scriptblock aus -Action mit dem Pfad der temporären Datei aufgerufen.
Die temporäre Kopie wird unabhängig vom Erfolg der Aktion im finally-Block wieder entfernt. Bei sehr langen Quellpfaden kann optional eine LongPath-Notation (\\?\) verwendet werden.
-SourceFile
Type: stringVollständiger Pfad zur Quell-Datei, die kurzfristig in einen kurzen Temp-Pfad kopiert werden soll.
-Action
Type: scriptblockScriptblock, der mit dem Pfad der temporären Datei aufgerufen wird. Der Scriptblock sollte einen Parameter annehmen, z. B. param($TempFile).
.INPUTS None. Es werden keine Pipeline-Objekte akzeptiert.
System.Object. Gibt die Ausgabe des Scriptblocks unverändert zurück (PassThru).# PDF mit kurzem Temp-Pfad als Attachment versenden
Invoke-ShortTempAttachment -SourceFile $attachmentPath -Action {
param($tempFile)
Send-JsonDbMail -Subject $subject -Body $body -Attachments $tempFile -DataPath $dataPath
}# Ergebnis der Aktion zurückgeben (z. B. Hash über die temporäre Kopie)
$hash = Invoke-ShortTempAttachment -SourceFile $path -Action {
param($tempFile)
Get-FileHash -Algorithm SHA256 -LiteralPath $tempFile
}