BoKat 0 Geschrieben Gestern um 17:26 Melden Geschrieben Gestern um 17:26 (bearbeitet) Hallo, ich bin neu mit PowerShell unterwegs und möchte via Script im Explorer ausgewählte Dateien an ein E-Mail anhängen. Die Einbindung in das Kontextmenü funktioniert. Für den Fall, dass ich nur eine Datei auswähle funktioniert mein Script. param( [string]$FilePath ) # Pfad zur Textdatei mit dem E-Mail-Text $emailTextPath = "W:\Kunden\EMailText.txt" $emailBody = Get-Content $emailTextPath -Raw # Outlook starten $outlook = New-Object -ComObject Outlook.Application $mail = $outlook.CreateItem(0) $mail.Subject = "Rechnungen" $mail.Body = $emailBody $mail.Attachments.Add($FilePath) $mail.Display() Für mehrere Dateien habe ich den Parameterteil wie folgt param( [Parameter(ValueFromRemainingArguments = $true)] [string[]] $files ) und das Einfügen der Dateien in das E-Mail wie folgt angepasst foreach ($filename in $files) { $mail.Attachments.Add($filename) } Die Commands in der Registry lauten für eine Datei (oben) und für mehrere Dateien (unten) powershell.exe -ExecutionPolicy Bypass -File "W:\Kunden\SendMail.ps1" "%1" powershell.exe -ExecutionPolicy Bypass -File "W:\Kunden\SendMail2.ps1" "%*" Leider bekomme ich auf diesem Weg nicht mehrere Dateien in das E-Mail. Was mache ich falsch? bearbeitet Gestern um 17:37 von BoKat unwesentliche Informationen entfernt Zitieren
MurdocX 998 Geschrieben vor 23 Stunden Melden Geschrieben vor 23 Stunden Probiere es nicht mit dem klassischen Parameter, denn der wird nicht funktionieren. Nutze stattdessen $args. if($null -ne $args) { $args | ForEach-Object { Write-Host $_ } pause } Erstelle unter "C:\Users\%username%\AppData\Roaming\Microsoft\Windows\SendTo" eine Verknüpfung zu deiner SendToPs.ps1-Datei. Zielpfad in der Verknüpfung: %ProgramFiles%\PowerShell\7\pwsh.exe -File "C:\Users\%username%\Desktop\SendToPs.ps1" Dann wirst du in diesem Beispiel beide Pfade angezeigt bekommen. In ForEach kannst du die Aufgaben implementieren. Ich hoffe das hilft Dir weiter. *Ergebnis Zitieren
MurdocX 998 Geschrieben vor 9 Stunden Melden Geschrieben vor 9 Stunden Ich hab mir das spaßeshalber mal gebaut. Das funktioniert ganz gut. Beachten solltest du aus Sicherheitsgründen das Skript an einem Ort abzulegen, dass du als Benutzer nicht ohne Admin-Berechtigung verändern kannst. Sonst kann hier mal schnell ungewollter Code ausgeführt werden. Zitieren
BoKat 0 Geschrieben vor 3 Stunden Autor Melden Geschrieben vor 3 Stunden Hallo Jan, vielen Dank für die schnelle Antwort. Ich bin erst jetzt dazu gekommen, es auszuprobieren. Mit dem Zielpfad in der Verknüpfung habe ich jedoch das Problem, dass die Datei pwsh.exe nicht gefunden wird. Die gibt es auf dem Rechner nicht. Ich arbeite unter Win 11 Pro 22H2. Viele Grüße BoKat Zitieren
Sunny61 833 Geschrieben vor 3 Stunden Melden Geschrieben vor 3 Stunden Wenn die pwsh.exe nicht vorhanden ist, dann installiere die Powershell 7 nach, oder ändere den Pfad auf die vorhandene Powershell.exe ab. Hier gibt es die aktuelle Version der PS7: https://github.com/powershell/powershell/releases Zitieren
Beste Lösung BoKat 0 Geschrieben vor 1 Stunde Autor Beste Lösung Melden Geschrieben vor 1 Stunde vor 1 Stunde schrieb Sunny61: Wenn die pwsh.exe nicht vorhanden ist, dann installiere die Powershell 7 nach, oder ändere den Pfad auf die vorhandene Powershell.exe ab. Hier gibt es die aktuelle Version der PS7: https://github.com/powershell/powershell/releases nach der Installation ist die exe jetzt vorhanden, jedoch die Verknüpfung funktionierte so nicht: %ProgramFiles%\PowerShell\7\pwsh.exe -File "W:\Kunden\list_selected_files.ps1" Es kam die Meldung: "Die Datei %ProgramFiles%\PowerShell\7\pwsh.exe wurde nicht gefunden." Mit der Verknüpfung auf die konkrete Datei: "C:\Program Files\PowerShell\7\pwsh.exe" -File "W:\Kunden\list_selected_files.ps1" geht es. Viele Dank. Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.