Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

.txt Dateien aus Ordner in Array laden.

Frage Entwicklung Batch & Shell

Mitglied: FunkerVogt

FunkerVogt (Level 1) - Jetzt verbinden

08.05.2013, aktualisiert 14:06 Uhr, 1382 Aufrufe, 6 Kommentare

Hallöchen,

habe wieder einmal ein kleines Problemchen, welches
hoffentlich durch Eure Hilfe schnell als erledigt markiert
werden kann.

Ich hab einen Ordner in dem durch einen Task eine
ungewisse Zahl .txt Dateien hinein kopiert werden.

Diese sollen wiederum durch eine .ps1 per Mail
versand werden. Das versenden von einer .txt
klappt Problemlos. Nur wie bekomme ich mehrere
Textdateien in ein Array um diese dann an die

01.
 $Attachment = new-object Net.Mail.Attachment($TextDateiEn)
zu übergeben un zu versenden. Also als Attachment.

Muss jetzt keine Arraylösung sein. Für mich aber der
plausibelste Ansatz.

01.
$Count = @(Get-ChildItem $Pfad -include "*.txt")  
02.
$Count.gettype()  
03.
$Count1=$Count.count 
04.
$Count1
Ich weiß also schon mal wieviele Dateien ins Array müssen.


Nur wie gesagt, bekomme ich jetzt diese X .txt Dateien ins Array????


Danke schon mal fürs grübeln und posten Eurer Vorschläge.



Zwischenzeitlich habe ich schon mal herausgefunden, dass $Count bereits
mit den Namen der .txt Dateien gefüllt ist.

Wäre nur noch die Frage, wie ich diese aneinandergereit als Variable speichere.

$TextDateiEn = $Count[0]+$Count[1]+ x --- für den Mailversand
Mitglied: colinardo
08.05.2013, aktualisiert um 14:23 Uhr
Hallo FunkerVogt,

01.
get-childitem -Path $Pfad -Filter *.txt | %{$att = New-Object Net.Mail.Attachment($_.FullName); $Mail.Attachments.Add($att)}
wobei $MAIL dein Mailobjekt ist und $Pfad dein Pfad zu den *.txt-Dateien.

Zur Info: %{} ist eine Abkürzung für ein foreach-object

Grüße Uwe
Bitte warten ..
Mitglied: colinardo
08.05.2013, aktualisiert um 14:48 Uhr
wenn es denn ein Array sein soll/muss:
01.
$arr = new-object collections.arraylist 
02.
dir c:\Pfad\*.txt | %{$arr.Add($_.FullName)} 
03.
$arr | %{$Mail.Attachments.Add($_)}
oder alternativ noch als Hashtable ohne ein .Net-Object :
01.
$hashTable = @{} 
02.
$i = 0 
03.
dir *.csv | %{$hashTable.Add($i,$_.FullName); $i +=1} 
04.
$hashTable.GetEnumerator() | %{$Mail.Atachments.Add($_.Value)}
Bitte warten ..
Mitglied: FunkerVogt
08.05.2013 um 15:28 Uhr
Danke Colinardo,

hab Deine Varianten durchprobiert aber trotz anpassens Fehler erhalten.
Auf Fehlersuche hatte ich bis jetzt noch keine Lust (Schande über mich)!

Aber vielleicht kennst Du oder jemand anderes eine alternative Methode/Möglichkeit,
dem Attachmentfile (Net.Mail.Attachment($TextDateiEn)) per Zuweisung
mehrere Dateien unterzujubeln. Quasi $TextDateiEn = $Datei + $Datei2 + $Dateix.?

Trotzdem erst einmal vielen Dank.

Gruss

Uwe
Bitte warten ..
Mitglied: colinardo
08.05.2013 um 15:37 Uhr
Zitat von FunkerVogt:
Aber vielleicht kennst Du oder jemand anderes eine alternative Methode/Möglichkeit,
dem Attachmentfile (Net.Mail.Attachment($TextDateiEn)) per Zuweisung
mehrere Dateien unterzujubeln. Quasi $TextDateiEn = $Datei + $Datei2 + $Dateix.?
geht immer nur One-by-One ...

poste halt deinen ganzen Code dann finden wir den Fehler.
Bitte warten ..
Mitglied: FunkerVogt
08.05.2013 um 15:48 Uhr
Ich schick jetzt nich alles... das Sendmailgedöns spare ich mir einfach mal

01.
$Datei = "" 
02.
$Pfad2 = Get-Location 
03.
$fileItem = Get-Item "*.txt"  
04.
$filename = $fileItem.Name  
05.
 
06.
 
07.
# liefert den übergeordneten Ordner 
08.
 
09.
$Pfad3 = Split-Path $Pfad2 -Parent 
10.
$Pfad4 = Split-Path $Pfad2 -leaf 
11.
 
12.
# prüft ob im Ordner min 1 .txt Datei vorhanden ist  
13.
$CheckDat = $Pfad3 + "\" + $Pfad4 + "\*.txt" 
14.
 
15.
# zählt die Anzahl der .txt Dateien im Ordner 
16.
$Count = @(Get-ChildItem $CheckDat -include "*.txt")  
17.
$Count.gettype()  
18.
$Count1=$Count.count 
19.
 
20.
 
21.
If (Test-Path $CheckDat) 
22.
23.
    "Datei existiert" 
24.
If ($Count1 -gt 0) 
25.
26.
# Zuweisung des Attatchments bei mehreren Dateien 
27.
 
28.
for($i=0; $i -lt $Count1; $i++) 
29.
30.
$Datei = $Count[$i] 
31.
 
32.
33.
34.
 
35.
else 
36.
 
37.
38.
# Zuweisung des Attatchments bei einer Datei 
39.
$Datei = $Pfad3 + "\" + $Pfad4 + "\" + $filename 
40.
$Attachment = new-object Net.Mail.Attachment($Datei) 
41.
42.
 
43.
# MAilversand 
44.
 
45.
     function sendmail($body)
Bitte nix zu den Variablen sagen und ist sicherlich auch nich professionell aber
meiner einer steckt noch in den Powershellkinderschuhen.

Das Skript ist auch gewachsen. Hieß zuerst die Dateien enthalten nur eine .txt Datei
nun wurden es vielleicht doch mehr.
Bitte warten ..
Mitglied: colinardo
08.05.2013, aktualisiert um 18:00 Uhr
OK zu dem Code sag ich jetzt mal nix, weil jeder mal anfängt !

habe nur die IF-Bedingung rausgenommen die überprüft wie viele Dateien vorhanden sind, die brauchen wir bei dem Befehl der verwendet wird nicht. Den Rest habe ich so gelassen wie er ist da wären zu viele Kommentare nötig...

Warum es bei dir nicht funktioniert hat ist weil du wahrscheinlich für das versenden eine Function benutzt und das Mail-Object nicht Public deklariert hast. Habe Dir eine sendmail-Function gebaut der du die Attachments einfach als Liste von Dateien übergibst (bzw. die Ausgabe des get-childitem-Befehls verwenden kannst).

01.
 
02.
Function sendmail($FROM,$TO,$SUBJECT,$BODY,$ATTACHMENTS){ 
03.
  $SMTPHOST = "mailserver" 
04.
  $SMTPPORT = 25 
05.
  $SMTPClient = New-object System.Net.Mail.SmtpClient($SMTPHOST,$SMTPPORT) 
06.
  $SMTPClient.EnableSsl = $true 
07.
  $Mail = new-object System.Net.Mail.MailMessage 
08.
  $Mail.from = $FROM  
09.
  $Mail.to.add($TO) 
10.
  $SMTPUSER = "SMTPUSERNAME" 
11.
  $SMTPPass = "SUPERGEHEIMESPASSWORT" 
12.
  $SMTPClient.Credentials = new-object System.Net.NetworkCredential($SMTPUSER,$SMTPPass) 
13.
  $Mail.Subject = $SUBJECT 
14.
  $Mail.Body = $BODY 
15.
  if ($ATTACHMENTS -ne $NULL){ 
16.
    foreach ($att in $ATTACHMENTS){ 
17.
      $Mail.Attachments.Add($att.FullName) 
18.
19.
20.
  $SMTPClient.Send($Mail) 
21.
22.
 
23.
 
24.
 
25.
$Datei = "" 
26.
$Pfad2 = Get-Location 
27.
$fileItem = Get-Item "*.txt"  
28.
$filename = $fileItem.Name  
29.
 
30.
 
31.
# liefert den übergeordneten Ordner 
32.
 
33.
$Pfad3 = Split-Path $Pfad2 -Parent 
34.
$Pfad4 = Split-Path $Pfad2 -leaf 
35.
 
36.
# prüft ob im Ordner min 1 .txt Datei vorhanden ist  
37.
$CheckDat = $Pfad3 + "\" + $Pfad4 + "\*.txt" 
38.
 
39.
# zählt die Anzahl der .txt Dateien im Ordner 
40.
$Count = @(Get-ChildItem $CheckDat -include "*.txt")  
41.
$Count.gettype()  
42.
$Count1=$Count.count 
43.
 
44.
# das hier wurde eingefügt 
45.
$file_attachments = get-childitem -Path $Pfad2 -Filter *.txt 
46.
#------------------------- 
47.
 
48.
# Mailversand NEU -------------- 
49.
sendmail "der@sender.com" "der@empfaenger.com" "DEIN BETREFF" "DER INHALT" $file_attachments 
50.
# ------------------------------
Grüße Uwe
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst 2 große TXT Dateien vergleichen und Unterschiede in andere Datei schreiben (6)

Frage von sid.pdm zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell: Variablen aus .txt Dateien heraus ausgeben (5)

Frage von Tobiased zum Thema Batch & Shell ...

Microsoft Office
gelöst Txt Dateien in Excel importieren (9)

Frage von Serbitar zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...