Powershell mehrere Attachments (unbekannt) versenden

@sikarr
Code steht da... hab ihn etwas spät eingefügt
 
wie zum teufel ist es möglich das es sich deswegen wiederholt?
ich dachte da macht man was richtig und gibt den Pfad ein, und es wiederholt sich.....
was soll das?
und was wäre wen ich nun einen Abstand im Pfad hätte?

ECHT... so ein scheiss


danke

Und was für ein Unterschied hat: >"< oder >'< oder >`< das....?
 
Die Einleitung bringt mich gleich auf ein Thema...
REGEX

Wen ich jetzt einen Teilnamen von der Datei kenne und immer die Datei so rausfilter möchte, wie mache ich das nun im verbund zu Regex?

Sagen wir die Datei heisst jfrioxcxxvntTESTdfjsafie0w.txt
jetzt möchte ich alle dateien falls test vorhanden versenden?!
 
Ist es den nun da in den "" möglich einen komplexen regex einzugeben? Geile sache
 
Wenn du einfache Regeln hast, kannst du das (Glob) Pattern einfach im Pfad übernehmen.
Code:
dir \\pfad\zum\share\*test*.txt
Wenn die Regeln komplexer werden (oder du eben Regex benötigst), würde ich dann mit Where-Object (Alias ?) filtern.
Code:
# Alle Dateien mit test im Namen und der Endung .txt
dir \\pfad\zum\share | ? { $_.BaseName -like "*test*" -and $_.Extension -eq ".txt" }

# Alle Dateien mit test im Namen, Endung .txt und kleiner 1 MB
dir \\pfad\zum\share | ? { $_.BaseName -like "*test*" -and $_.Extension -eq ".txt" -and $_.Length -lt 1mb }
Übrigens, wenn du nur Dateien haben willst, würde ich noch den Parameter -File an Get-ChildItem/dir ran setzen, sonst listet er auch Ordner mit auf.
Retsam-Master schrieb:
Ist es den nun da in den "" möglich einen komplexen regex einzugeben? Geile sache
Ja -match erwartet einen Regex als String.
 
Was soll denn das GetFileName() da? :confused_alt:

Und welche PS-Version ist das? Wenn < 5.1: auf 5.1 aktualisieren.

Es sollte für die Attachments völlig genügen, wenn man da
PowerShell:
[system.io.fileinfo[]] $Attachments = Get-ChildItem "\\path\test\*.txt"
Send-MailMessage ... -Attachments $Attachments.FullName ...
sagt.
 
@RalphS du hast dir aber die anderen Post auch durchgelesen oder?
Falls Ja, wüsstest du das dies bereits durchgekaut ist und ein
PowerShell:
$Attachments = Get-ChildItem "\\path\test\*.txt"
Send-MailMessage ... -Attachments $Attachments ...
völlig genügen tut.
Das "[system.io.fileinfo[]]" ist genausüberflüssig wie die Angabe ".Fullname" hinter der "$Attachments" Variable.
 
Zuletzt bearbeitet:
@sikarr
Ist es auch möglich zu sagen wie bei dem Where -match
eine Zeitangabe zu machen?
wie zb. alles versenden das where -match + nicht älter als 2Wochen ist? oder so?
 
Innerhalb von zwei Wochen: dir | ? { $_.LastWriteTime - [DateTime]::Now.AddDays( -14 ) -gte 0 }

Älter als zwei Wochen dann natürlich mit -lt vergleichen
Code:
dir \\pfad\zum\share | ? {
  $_.BaseName -like "*test*" ` # test im Namen
    -and $_.Extension -eq ".txt" ` # Dateiendung .txt
    -and $_.Length -lt 1mb ` # Länge < 1 MB
    -and $_.LastWriteTime - [DateTime]::Now.AddDays( -14 ) -gte 0 # innerhalb von 2 Wochen
}
 
@Yuuri

Also ist das hier für meinen Fall als "dir" option korrekt und funktioniert?

PowerShell:
dir \\pfad\zum\share | ? {

    where {$_.Name -match "[tes]{4}"} ` # test im Namen

    -and $_.Extension -eq ".txt" ` # Dateiendung .txt

    -and $_.LastWriteTime - [DateTime]::Now.AddDays( -14 ) -gte 0 # innerhalb von 2 Wochen

}

Was bedeuten die "::"?
oder auch das ? nach dem |?
 
Mit deinem Regex sagst du, dass die Buchstaben t, e und s vier Mal vorkommen müssen. Du inkludierst also ssss, eeee, tttt, sowie auch stes, ttte und ähnliche Kombinationen. Ich denke nicht dass das gewollt ist.
 
@Yuuri
Nein ich sage mit {4} muss mindestens der Inhalt von [xyz] 4mal vor kommen
Dies kann nur durch tttt sein oder ttee oder tsst oder sonst was sein.
Wie zb. auch [a-z0-9]{4} bedeutet ja auch irgendwie muss mindestens der inhalt zwischen [] 4 mal vorhanden sein egal welche Buchstaben und zahlen.
dies geht genauso mit [tes]{4} = mögliche kombination "test"

@sikarr
an sich super, aber ich könnte so den kompletten Dateinamen in die RegEx nehmen. und nicht nur den Inhalt ;)
Wird diese woche noch probiert falls ich Zeit finde
Werde euch gerne mit "@" kontaktieren sollte es funktioniert / nicht ufnktioniert haben :D hoffe ersteres.
 
@Retsam-Master Lies den Absatz nochmal genau. Du erlaubst mit deinem Regex jegliche Kombination von den drei Buchstaben t, e und s mit einer Länge von vier Zeichen.

Folgende Kombinationen sind also bspw. möglich:
https://www.browserling.com/tools/text-from-regex
Code:
esss
test
ttee
etse
ttss
tset
sett
sess
eset
tees
ttte
stss
sset
eset
estt
sttt
ttte
ssse
seee
estt
stet
stes
stte
stes
stst
etst
esss
...
Ich glaube nicht, dass das so gewollt ist?! Zumindest hat dein test bisher nicht den Anschein gemacht...
 
Asoooo ich habs nur eingegränzt das ganze was du meinst wäre sowas ".[tes]{4}."
Ich wollte nur wegen der Richtigkeit fragen obs so gehen würde
 

Ähnliche Themen

Zurück
Oben