Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Powershell mehrere Attachments (unbekannt) versenden
- Ersteller Retsam-Master
- Erstellt am
sikarr
Vice Admiral
- Registriert
- Mai 2010
- Beiträge
- 6.455
Das versteh ich jetzt nicht? Was heist kompletten Dateinamen in RegEx nehmen? Haben deine Dateinamen den ein festes Namensshema?Retsam-Master schrieb:ich könnte so den kompletten Dateinamen in die RegEx nehmen. und nicht nur den Inhalt
M
Micha45
Gast
Ich will mich hier ja nicht groß einmischen, auch wenn ihr hier offensichtlich bei PowerShell Version 3 hängen geblieben seid. Ab Version 5.1 geht das alles weitaus kürzer, aber geschenkt ...
Die Behauptung von sikarr, dass [system.io.fileinfo[]] unnötig sei, ist einfach falsch.
Das ist gerade bei vielen und komplexen Dateien die schnellste und effektivste Methode von allen.
Und was bedeutet -gte ? GreaterThan(Or)Equal? Das funktioniert so nicht!
-ge muss es lauten -> Greater(Or)Equal
Die Behauptung von sikarr, dass [system.io.fileinfo[]] unnötig sei, ist einfach falsch.
Das ist gerade bei vielen und komplexen Dateien die schnellste und effektivste Methode von allen.
Und was bedeutet -gte ? GreaterThan(Or)Equal? Das funktioniert so nicht!
-ge muss es lauten -> Greater(Or)Equal
Yuuri
Fleet Admiral
- Registriert
- Okt. 2010
- Beiträge
- 13.928
Wie geht es denn weitaus kürzer als ein simpler One-Liner? Das interessiert mich jetzt wirklich... Bitte erhelle uns doch, statt hier einen auf beleidigte Leberwurscht zu machen.Micha45 schrieb:Ich will mich hier ja nicht groß einmischen, auch wenn ihr hier offensichtlich bei PowerShell Version 3 hängen geblieben seid. Ab Version 5.1 geht das alles weitaus kürzer, aber geschenkt ...
Micha45 schrieb:Die Behauptung von sikarr, dass [system.io.fileinfo[]] unnötig sei, ist einfach falsch.
Das ist gerade bei vielen und komplexen Dateien die schnellste und effektivste Methode von allen.
Code:
> dir $env:TEMP | % { $_.GetType().FullName + " extends " + $_.GetType().BaseType.FullName }
System.IO.DirectoryInfo
System.IO.DirectoryInfo
System.IO.DirectoryInfo
System.IO.DirectoryInfo
System.IO.DirectoryInfo
... alle Ordner ...
System.IO.FileInfo
System.IO.FileInfo
System.IO.FileInfo
System.IO.FileInfo
System.IO.FileInfo
System.IO.FileInfo
... alle Dateien ...
System.IO.FileInfo
kommt automatisch bei Dateien zurück und wie angemerkt, sollte sowieso auf den Parameter -File
zurückgegriffen werden. Ein Cast bringt dir hier höchstens in der ISE für die Code Completion was, aber selbst diese ist eigentlich fortschrittlich genug um den Typen zu ermitteln...Oh ein Flüchtigkeitsfehler... Sollte beim ersten Run auffallen, wenn ein Syntaxfehler kommt...Micha45 schrieb:Und was bedeutet -gte ? GreaterThan(Or)Equal? Das funktioniert so nicht!
-ge muss es lauten -> Greater(Or)Equal
M
Micha45
Gast
Ich fühle mich jetzt weder berufen, hier jemanden zu erhellen, noch spiele ich die beleidigte Leberwurst.
Ihr macht das schon und es gibt ja vom Grundsätzlichen her nichts gegen eure Ausführungen einzuwenden.
Auf einen Fehler, oder von mir aus auch auf einen "Flüchtigkeitsfehler", wird man ja wohl noch hinweisen dürfen.
Wer spielt hier die beleidigte Leberwurst?
-gte kannte ich bisher nicht und es hätte ja sein können, dass mir dahingehend etwas entgangen ist.
Ihr macht das schon und es gibt ja vom Grundsätzlichen her nichts gegen eure Ausführungen einzuwenden.
Auf einen Fehler, oder von mir aus auch auf einen "Flüchtigkeitsfehler", wird man ja wohl noch hinweisen dürfen.
Wer spielt hier die beleidigte Leberwurst?
-gte kannte ich bisher nicht und es hätte ja sein können, dass mir dahingehend etwas entgangen ist.
sikarr
Vice Admiral
- Registriert
- Mai 2010
- Beiträge
- 6.455
Nein, ist es nicht. Klar kann man es machen aber es ist schlicht nicht nötig, und um es einfach zu halten reicht es doch auch so. Also ich hab's noch nie gebraucht.Micha45 schrieb:Die Behauptung von sikarr, dass [system.io.fileinfo[]] unnötig sei, ist einfach falsch.
- Registriert
- Jan. 2019
- Beiträge
- 1.100
@Yuuri
@sikarr
Der sagt mir sowas hier
-and : Die Benennung "-and" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die .....
@sikarr
Der sagt mir sowas hier
-and : Die Benennung "-and" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die .....
Ergänzung ()
PowerShell:
$attachments = dir \\der\path | ? {
where {$_.Name -match "test"} ` # test im Namen
-and $_.Extension -eq ".txt" ` # Dateiendung .txt
-and $_.LastWriteTime - [DateTime]::Now.AddDays( -7 ) -gte 0 # innerhalb von 1 Wochen
}
sikarr
Vice Admiral
- Registriert
- Mai 2010
- Beiträge
- 6.455
PowerShell:
$attachments = dir \\der\path | ? {
$_.Name -match "test" ` # test im Namen
-and $_.Extension -eq ".txt" ` # Dateiendung .txt
-and $_.LastWriteTime - [DateTime]::Now.AddDays( -7 ) -ge 0 # innerhalb von 1 Wochen
}
- Registriert
- Jan. 2019
- Beiträge
- 1.100
@sikarr
Hab jetzt beide -and weg genommen da Fehler aufgetreten sind.
Das Problem ist er findet nun nicht mal den Pfad:
=
Send-MailMessage : Das Argument für den Parameter "Attachments" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL
oder leer ist, und führen Sie den Befehl erneut aus.
Hab jetzt beide -and weg genommen da Fehler aufgetreten sind.
Das Problem ist er findet nun nicht mal den Pfad:
PowerShell:
$attachments = dir \\der\path | ? {
$_.Name -match ".*test.*" ` # test im Namen
}
=
Send-MailMessage : Das Argument für den Parameter "Attachments" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL
oder leer ist, und führen Sie den Befehl erneut aus.
sikarr
Vice Admiral
- Registriert
- Mai 2010
- Beiträge
- 6.455
Poste doch mal bitte das genaue Script was du benutzt, weil \\der\pfad ist nicht gerade Aussagekräftig oder tausch nur die Wörter aus falls du dich damit sicherer fühlst.
Update:
Als 1 Zeiler gehts, liegt also an den Zeilenumbrüchen, da ich meine Scripte nicht so schreibe kann ich dir auch gerade nicht sagen woran das genau liegen könnte.
Update:
Als 1 Zeiler gehts, liegt also an den Zeilenumbrüchen, da ich meine Scripte nicht so schreibe kann ich dir auch gerade nicht sagen woran das genau liegen könnte.
Zuletzt bearbeitet:
- Registriert
- Jan. 2019
- Beiträge
- 1.100
@sikarr
Bitteschön:
asoo einen Fehler gefunden:
Er sucht wie oben genannt im J Verzeichnis wo mein Skript liegt aber nicht im \\..... verzeichnis
Bitteschön:
PowerShell:
$pw = Get-Content J:\Pfad\zum\Passwort\Datei.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential "absender@email.com", $pw
$attachments = dir \\Der\Pfad\zu\den\dateien | ? {
$_.Name -match ".*test.*" ` # test im Namen
-and $_.Extension -eq ".txt" ` # Dateiendung .txt
-and $_.LastWriteTime - [DateTime]::Now.AddDays( -7 ) -ge 0 # innerhalb von 1 Wochen
}
Send-MailMessage -Credential $cred -SmtpServer 'smtp.office365.com' -Port '587' -Attachments $attachments -to $EMail -cc 'eine_cc@ad.com' -from 'absender@email.com' -UseSsl -Subject "DerText" -body "weiterer text" -encoding ([System.Text.Encoding]::UTF8)
Ergänzung ()
asoo einen Fehler gefunden:
Er sucht wie oben genannt im J Verzeichnis wo mein Skript liegt aber nicht im \\..... verzeichnis
Zuletzt bearbeitet:
sikarr
Vice Admiral
- Registriert
- Mai 2010
- Beiträge
- 6.455
PowerShell:
$attachments = dir "\\Pfad\derDatein" | ? {$_.Name -match "test" -and $_.Extension -eq ".txt" -and $_.LastWriteTime - [DateTime]::Now.AddDays( -7 ) -ge 0}
Kleine Anmerkung du hast im RegEx
".*test.*"
, ein match prüft innerhalb des String den Ausdruck, du musst also nicht noch explizit angeben das davor oder danach beliebige Zeichen auftreten dürfen, der gesuchte Ausdruck reicht in den Anführungszeichen.
Ergänzung ()
Dann erleuchte uns.Micha45 schrieb:Ab Version 5.1 geht das alles weitaus kürzer, aber geschenkt ...
Zuletzt bearbeitet:
Wenn ihr ein Command über mehrere Zeilen für mehr Übersichtlichkeit nutzen wollt, dann nimmt man eigentlich Space + Backticks, also (ungetestet):
(Der Linux User nimmt in Bash z.B. auch Space + Backslash)
PowerShell:
$attachments = dir "\\Pfad\derDatein" | ? {$_.Name -match "test" `
-and ...
...
(Der Linux User nimmt in Bash z.B. auch Space + Backslash)
- Registriert
- Jan. 2019
- Beiträge
- 1.100
Komisch der sucht ständig im J: Verzeichnis wo das skript liegt
Habs nun raus kopiert von euch und nur den Pfad angepasst etc.
Meldung bleibt:
Send-MailMessage : Das Argument für den Parameter "Attachments" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL
oder leer ist, und führen Sie den Befehl erneut aus.
Is ja logisch er findet die Datei unter J nicht
Habs nun raus kopiert von euch und nur den Pfad angepasst etc.
Meldung bleibt:
Send-MailMessage : Das Argument für den Parameter "Attachments" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL
oder leer ist, und führen Sie den Befehl erneut aus.
Is ja logisch er findet die Datei unter J nicht
- Registriert
- Jan. 2019
- Beiträge
- 1.100
Hab ich mit " oder auch mit '
geht nicht... der sucht immer in "J:" (nehm ich an)
entferne ich die 2x -and und führe es dann aus, sehe ich das er in J: sucht
Fehler:Send-MailMessage : Die Datei "J:\Pfad\dfskafjdksjtest.txt" konnte nicht gefunden werden.
mit den 2x -and Fehler=
Send-MailMessage : Das Argument für den Parameter "Attachments" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben
Sie ein Argument an, das nicht NULL oder leer ist, und führen Sie den Befehl erneut aus.
geht nicht... der sucht immer in "J:" (nehm ich an)
entferne ich die 2x -and und führe es dann aus, sehe ich das er in J: sucht
Fehler:Send-MailMessage : Die Datei "J:\Pfad\dfskafjdksjtest.txt" konnte nicht gefunden werden.
mit den 2x -and Fehler=
Send-MailMessage : Das Argument für den Parameter "Attachments" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben
Sie ein Argument an, das nicht NULL oder leer ist, und führen Sie den Befehl erneut aus.
- Registriert
- Jan. 2019
- Beiträge
- 1.100
Wen ich den Pfad nach dir '\\hallo\pfad' ein \ anhänge findet er gleich die daten (als empfehlungsbeispiel) zb. 'hallo\pfad\' zeigt er gleich an in der Vorschau alle Daten darin.
wen ich nur den Bereich attachments ausführe...
Wie zeige ich mir den Inhalt danach von $attachments an?
Ergänzung ()
wen ich nur den Bereich attachments ausführe...
Wie zeige ich mir den Inhalt danach von $attachments an?