Jump to content

Argumente (Dateien) übergeben


Empfohlene Beiträge

Geschrieben (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 von BoKat
unwesentliche Informationen entfernt
Geschrieben

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

image.png.5e59618c2d981b3cd81965bbce92c216.png

Geschrieben

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.

Geschrieben

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...