2017-07-03 1 views
0

Hallo Stack-Überlauf-Community, für eine Sicherheitsklasse versuche ich einen "schlechten" USB zu replizieren, der angeschlossen wird, und dann über Outlook eine generierte Textdatei an einen Empfänger zu senden.Wie kann ich eine relative Pfadtextdatei erhalten, die als E-Mail-Anhang in PowerShell gesendet werden soll?

Ich werde sagen, ich bin ein PowerShell-Neuling auf alle Fälle, so dass dies etwas einfaches sein kann, dass ich einfach nicht verstehe.

Ich kann nicht den relativen Pfad für $ var1 zu arbeiten.

Wenn ich einen absoluten Pfad zu der generierten Datei verwende, sendet er die Anlage in Ordnung.

Ich versuche, die Get-ChildItem e:\ -filter "*.txt" zu füllen diese Variable dynamisch zu verwenden, aber wenn es um die .Attchments.Add($var1) bekommt es mit der Zwischenzeit Error while invoking Add. Could not find member.

bricht, die .Count Funktion auf eine 1 zurückkehrt, was bedeutet, dass die Datei Dort.

Ich konnte keinen guten Hinweis darauf finden, was dieser Fehler bedeutet. Das Durchsuchen des Fehlers führt zu Microsoft-Dokumentation und nichts, das sich auf Programmierung in Powershell bezieht. Ich habe versucht, mit ' um die Get-ChildItem-Anweisung und verschiedene andere syntaktische Optimierungen zu verwirren. Ich habe keine gute Alternative zu der Art gefunden, wie wir uns entschieden haben, die E-Mail bisher zu versenden. Das Sichern von SMTP ist nicht praktikabel, da es nicht zum Szenario passt.

New-Item -Path E:\ -Name "DynamicNameOfPC" -ItemType "file" -Value "Test" 
(Get-ChildItem e:\ -filter "*.txt").Count 

$var1 = Get-ChildItem e:\ -filter "*.txt" 


$OL = New-Object -ComObject outlook.application 

Start-Sleep 5 
#Create Item 
$mItem = $OL.CreateItem("olMailItem") 

$mItem.To = "[email protected]" 
$mItem.Subject = "Testing Script" 
$mItem.Body = "Testing" 
$mItem.Attachments.Add($var1) 
$mItem.Send()  

`

+2

Relativer Pfad? Relativ zu was? Und wie würde das helfen? Klingt wie ein Red-Hering. 'Get-ChildItem' gibt Pfadnamen nicht als Strings zurück, es gibt FileInfo-Objekte zurück, das ist wahrscheinlich was bricht add(). Wenn absolute Pfade funktionieren (und sie sollten), sollte '$ var1.FullName' funktionieren. – TessellatingHeckler

+0

Vielen Dank für die Erklärung der Funktion .FullName. Das hat genauso gut funktioniert wie die manipulierte Art, wie ich es in der Selbstantwort gemacht habe. .FullName ist offensichtlich eine viel bessere Lösung. – Athorith

Antwort

0

Durch die Analyse mit einem zufälligen Benutzer auf einem Discord, konnten wir die Get-ChildItem wurde immer die Dateinamen, aber nicht den vollständigen Pfad realisieren.

Hinzufügen einer Variable mit dem Pfad von E: \ vor $var1 hat es funktioniert perfekt.

+1

Ich empfehle Ihnen, den Kommentar von TesselingHeckler zu lesen und zu verstehen (https://stackoverflow.com/questions/44877511/how-can-i-get-a-relative-path-text-file-to-be-sent-as- an-E-Mail-Anhang-in-pow # comment76734981_44877511). [Get-ChildItem'] (https://msdn.microsoft.com/en-us/powershell/reference/5.0/microsoft.powershell.management/get-childitem) gibt [FileInfo] (https://msdn.microsoft .com/de-de/library/system.io.fileinfo_properties (v = vs.110) .aspx) und [DirectoryInfo] (https://msdn.microsoft.com/de-de/library/system.io.directoryinfo (v = vs.110) .aspx), die den vollständigen Pfad als Eigenschaft 'Fullname' enthalten. – gms0ulman

Verwandte Themen