mero59
Goto Top

Ordner auslesen und Ausgabe spliten

Erst mal ein freundliches Hallo an alle,
ich bin neu hier und hoffe das ich hier meine Kenntnisse vertiefen kann bzw. mit meinen Kenntnisse den ein oder andern auch mal helfen kann.
Zu meinen Problem:
Mein Outlook 2010 speichert Mails mit Attachments in einen Ordner, dabei wird der Filename aus Sender-Email Adr., Subject und einen Date getrenntdurch & generiert.
Beispiel:
Sender ist :Max.Mustermann@musterhausen.com
Subject ist : Tagesmeldung
Dateiname wird dann: Max.Mustermann@musterhausen.com&Tagesmeldung&31082013
Nun möchte ich den Ordner mit den Dateien auslesen
- mir den String Max.Mustermann@musterhausen.com rausholen
- und diesen String prüfen ob dieser in einer Partnerdatei vorhanden ist
- wenn ja dann die Datei weiter verarbeiten
- wenn nein soll eine Email generiert werden mit Hinweis auf z.B Partner nicht vorhanden.

Komme jedoch mit meinen Lösungansatz da irgendwie nicht weiter

Code:
  1. --------------------------------------------------------------------------------
$files = Get-ChildItem "C:\Daten" # Ordner auslesen
foreach( $file in $Files )
{
if( $file)
{
$splitfilename = $File.name.split('&')

foreach($Objekt in Import-CSV $Partner_Email_File)
{$Objekt.Partner
$Objekt.Email_Adr
if ($Objekt.Email_Adr -eq $splitfilename){

$Script:Partner_Email_File_Name = $Objekt.Partner
$Script:Partner_Email_File_Adr = $Objekt.Email_adr
Write-Log $Partner_Email_File_Adr
}
else
{
Write-log "partner nicht vorhanden"
}
}
Next_Step $Script:Partner_Email_File_Name
}
}


Diese Methode läuft zwar ohne Fehler durch jedoch das Ergebnis stimmt nicht:
Als Beispiel:
Es liegen 2 Dateien von bekannten Sender vor, die Ausgabe der Log zeigt mir dann 2 gefundene Partner jedoch auch 2 Einträge Partner nicht vorhanden
wo liegt da mein Gedankenfehler?

Content-Key: 215775

Url: https://administrator.de/contentid/215775

Printed on: April 26, 2024 at 19:04 o'clock

Member: colinardo
colinardo Aug 31, 2013 updated at 17:14:34 (UTC)
Goto Top
Hallo mero59, WIllkommen im Forum !
probiers mal so:

$files = Get-ChildItem "C:\Daten" # Ordner auslesen  
foreach ($file in $Files)
{
    $splitfilename = $File.name.split('&')  
    $partnerName = $splitfilename
    $partnerFound = $false
    foreach($Objekt in Import-CSV $Partner_Email_File)
    {
        $Objekt.Partner
        $Objekt.Email_Adr
        if ($Objekt.Email_Adr -eq $partnerName ){
            $Script:Partner_Email_File_Name = $Objekt.Partner
            $Script:Partner_Email_File_Adr = $Objekt.Email_adr
            Write-Log $Partner_Email_File_Adr
            $partnerFound = $true
            break
         }
    }
    
    if (!$partnerFound)
    {
         Write-log "Partner: '$partnerName' nicht vorhanden."  
    }
    
}
Das Problem bei deinem Code war das er bei jedem Eintrag in der CSV-Datei auf die der Name der Datei nicht passt, ausgegeben wird "Partner nicht gefunden". Bei der meiner Version beendet das Script die Schleife vorzeitig wenn der Partner gefunden worden ist, und die Ausgabe das ein Partner nicht vorhanden ist wird nachdem die Schleife alle Zeilen durchlaufen hat geprüft.

Grüße Uwe

p.s. Für die Zunkunft poste Code bitte mit Tags, damit uns keine Sonderzeichen verloren gehen. Merci.
Member: mero59
mero59 Aug 31, 2013 at 17:33:26 (UTC)
Goto Top
Hi Uwe,
perfekt das hat geklappt, tausend Dank

Lieben Gruß

Heiko