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.

Mitglied: FunkerVogt

FunkerVogt (Level 1) - Jetzt verbinden

08.05.2013, aktualisiert 14:06 Uhr, 1441 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 ...

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 ...

VB for Applications

Array aus anderer Datei auslesen

gelöst Frage von jaydotkayVB for Applications2 Kommentare

Hallo liebe Leute, ich würde gerne von einem Makro aus ein Datenfeld auslesen, dass in einer anderen Datei liegt. ...

Neue Wissensbeiträge
Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 10 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 11 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 14 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 1 TagWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server40 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...