Top-Themen

Aktuelle Themen (A bis Z)

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, 1434 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 ..
Ähnliche Inhalte
Entwicklung
CSV Dateien aus einem Ordner in ein EXCEL sheet laden
Frage von lksfltnEntwicklung6 Kommentare

Hallo, Ich habe folgendes Anliegen: Ich habe einen Ordner (C:\ROHDATEN) in dem eine Anzahl X CSV Dateien liegen. Ich ...

C und C++
C Sharp Auslesen was für eine TXT Datei im Ordner ist
Frage von DippsC und C++1 Kommentar

Hallo, ich habe ein Programm geschrieben wo die User die Outlook Signaur anpassen können zu unserem Unternehmen. Nun möchte ...

Batch & Shell
Mit Batch einen Ordne mit .txt Dateien nach einem Wort durchsuchen
gelöst Frage von noah1400Batch & Shell8 Kommentare

Hallo Ich möchte eine Art login mit Batch programieren. Als erstes gibt es eine Eingabe dort gibt man seinen ...

Viren und Trojaner
Laden Makroviren eine .exe-Datei?
gelöst Frage von FrAmErViren und Trojaner2 Kommentare

Hallo zusammen, ich teste momentan eine Whitelisting-Software. Nun habe ich mir folgende Frage gestellt: Laden Makroviren eine .exe-Datei nach ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 8 StundenInternet3 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registierunf von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 15 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 1 TagWindows 104 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 TagSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless18 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...