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 Powershell: Fileliste bekommen und als neue Variable setzten

Mitglied: Rockett

Rockett (Level 1) - Jetzt verbinden

15.03.2019, aktualisiert 08:49 Uhr, 375 Aufrufe, 45 Kommentare

Hallo Zusammen,

ich würde gerne die Informationen die ich damit:

01.
$Path='C:\Test\'
02.

03.
Get-ChildItem -Path $Path -File
gesammelt habe automatisch als eine Variable setzten namens $anhang

geht das? Mein Ziel ist es dann in einem anderen Script die Dateien als Anhang einzubinden mit der Variable $anhang

Vielen Dank

EDIT:
Zum besseren Verständnis ich bin jetzt soweit:

01.
    $abs="name@gmx.net"
02.
    $empf="name2@gmx.net"
03.
    $sub="Betreff"
04.
    $smtp="mx00.emig.gmx.net"
05.
    $msg="test2"
06.

07.

08.
    
09.
    Send-MailMessage –To $empf –Subject $sub –Body "$msg" –SmtpServer $smtp –From $abs
45 Antworten
Mitglied: SlainteMhath
15.03.2019, aktualisiert um 09:06 Uhr
Moin,

01.
$files=get-ChildItem ...
02.
Send-MailMessage ... -attachments $files ...
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

lg,
Slainte
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 09:18 Uhr
Super Danke

ne kleine frage... so wie ich es jetzt mache verschicke ich die dateien ja "Anonym" ... bzw irgendwie mit nem gefaketen absender... würde das irgendwie auf dauer ein Problem machen? Oder wäre es sinnvoll das irgendwie anders zu schreiben?

Ich mein jetzt tut es genau das was ich will... nur ist das erlaubt so?
Bitte warten ..
Mitglied: SlainteMhath
15.03.2019 um 09:44 Uhr
Was spricht denn dagegen den echten Absender einzusetzen?
Bitte warten ..
Mitglied: Kraemer
15.03.2019 um 09:45 Uhr
Moin,
Zitat von Rockett:
so wie ich es jetzt mache verschicke ich die dateien ja "Anonym" ...
wie kommst du denn da jetzt drauf?

Gruß
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 09:48 Uhr
nichts. im gegenteil das soll auch so sein, wusste nur nicht ob das rechtlich ein problem ist aber habe jetzt ein einfaches script mit authentifizierung gefunden Jetzt gerade google ich wie ich Powershell sagen kann:

Mach ein Fenster auf, lass den Benutzter einen Text eingeben (für den Body Teil der email) und speicher ihn in einer Variablen. Genauso wie get-credentials das macht. Am liebsten noch mit vordefiniertem Text als Vorlage

da noch nen Rat? Bzw ich google ja schon selber aber als Anfänger fehlen mir da die richtigen Worte für Google
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 09:49 Uhr
wie kommst du denn da jetzt drauf?

ganz einfach. Ich kann da ja auch pummelmann@bummel.de eingeben und Sie wird einfach verschickt mit dem Absender.
Bitte warten ..
Mitglied: Kraemer
15.03.2019 um 09:57 Uhr
Zitat von Rockett:

wie kommst du denn da jetzt drauf?

ganz einfach. Ich kann da ja auch pummelmann@bummel.de eingeben und Sie wird einfach verschickt mit dem Absender.
ganz sicher nicht über den SMTP von oben
Bitte warten ..
Mitglied: Kraemer
15.03.2019 um 10:03 Uhr
Zitat von Rockett:
da noch nen Rat? Bzw ich google ja schon selber aber als Anfänger fehlen mir da die richtigen Worte für Google
https://docs.microsoft.com/de-de/powershell/scripting/samples/creating-a ...
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 11:20 Uhr
ganz sicher nicht über den SMTP von oben

Doch mit dem: mx00.emig.gmx.net

kann damit aber NUR an gmx Adressen schicken. Dafür ist es ganz egal welcher Absender
Bitte warten ..
Mitglied: Pjordorf
15.03.2019 um 12:16 Uhr
Hallo,

Zitat von Rockett:
kann damit aber NUR an gmx Adressen schicken.
Sicher? Wie viele Konten hast du denn bei GMX?

Gruß,
Peter
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 12:42 Uhr
Sicher? Wie viele Konten hast du denn bei GMX?

ja okay hab jetzt nur an mich und meine Freundin geschickt Naja hab es ja jetzt zum Glück mit authentifizierung geschafft.
Bitte warten ..
Mitglied: Kraemer
15.03.2019 um 12:47 Uhr
Zitat von Rockett:

Sicher? Wie viele Konten hast du denn bei GMX?

ja okay hab jetzt nur an mich und meine Freundin geschickt Naja hab es ja jetzt zum Glück mit authentifizierung geschafft.
guck dir mal die Header an - da steht als Absender DEINE Mailadresse!
Bitte warten ..
Mitglied: Pjordorf
15.03.2019 um 12:48 Uhr
Hallo,

Zitat von Rockett:
ja okay hab jetzt nur an mich und meine Freundin geschickt
Und wer war der Tatsächliche Absender? Die Internetkopfzeilen in Outlook verraten es dir.

Gruß,
Peter
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 13:06 Uhr
Da steht die IP und alles drinne... auch mein Nachnahme... woher er die info nimmt weiß ich allerdings nicht Aber keine andere email adresse. Kann auch nicht sein da hier kein Mailprogramm eingerichtet ist...
Bitte warten ..
Mitglied: Rockett
15.03.2019, aktualisiert um 13:18 Uhr
Könnt ihr mir sagen was ich hier falsch mache?

01.
$message.Attachments.Add($anhang) 
$anhang hat auf jedenfall die richtigen infos weil write-host $anhang sie mir im Anschluss zeigt...

hier der ganze Code:

01.
$Path='C:\XXX\new\'
02.
$htmlbody='C:\XXX\XXX.html'
03.
$anhang=Get-ChildItem -Path $Path -File
04.

05.
# Sender and Recipient Info
06.
$MailFrom = "XXX@XXX.net"
07.
$MailTo = "XXX@XXX.de"
08.

09.
# Login ermitteln
10.
$MyCredential = Get-Credential -Message "Bitte geben Sie ihr Password ein" -UserName "XXX@XXX.net"
11.

12.
$MyCredential.UserName
13.
$MyCredential.Password
14.

15.
# Sender Credentials
16.
$Username = $MyCredential.UserName
17.
$Password = $MyCredential.Password
18.

19.
# Server Info
20.
$SmtpServer = "mail.gmx.com"
21.
$SmtpPort = "25"
22.

23.

24.
# Message stuff
25.
$MessageSubject = "Ihre Rechnungen von der XXXX" 
26.
$Message = New-Object System.Net.Mail.MailMessage $MailFrom,$MailTo
27.
$Message.IsBodyHTML = $true 
28.
$message.Attachments.Add($anhang) 
29.
$Message.Subject = $MessageSubject
30.
$Message.Body = Get-Content $htmlbody
31.

32.

33.
# Construct the SMTP client object, credentials, and send
34.
$Smtp = New-Object Net.Mail.SmtpClient($SmtpServer,$SmtpPort)
35.
$Smtp.EnableSsl = $true
36.
$Smtp.Credentials = New-Object System.Net.NetworkCredential($Username,$Password)
37.
$Smtp.Send($Message)
38.

39.
write-host $anhang
Bitte warten ..
Mitglied: Pjordorf
15.03.2019 um 13:20 Uhr
Hallo,

Zitat von Rockett:
Da steht die IP und alles drinne... auch mein Nachnahme... woher er die info nimmt weiß ich allerdings nicht
Dann frag den Provider

Aber keine andere email adresse. Kann auch nicht sein da hier kein Mailprogramm eingerichtet ist...
Du hast keine Mailprogramm eéingerichtet oder am laufen (Portable Versionen) und schaust dir von einer zugestellten erhaltene Mail die Kopfzeilen an?!? WhattheHölle

Gruß,
Peter
Bitte warten ..
Mitglied: SlainteMhath
15.03.2019 um 13:28 Uhr
Das ist jetzt ja andere code als oben...

ich nehme an du musst jedes Element in $anhang per foreach mit $message.Attachments.Add(...) an das Objekt ranhängen.
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 13:43 Uhr
Du hast keine Mailprogramm eéingerichtet oder am laufen (Portable Versionen) und schaust dir von einer zugestellten erhaltene Mail die Kopfzeilen > an?!? WhattheHölle

Über die weboberfläsche
Bitte warten ..
Mitglied: Rockett
15.03.2019, aktualisiert um 13:48 Uhr
Das ist jetzt ja andere code als oben...
Auf Grund der Autehtifizierung habe ich mich für einen anderen Code als Basis entschieden

ich nehme an du musst jedes Element in $anhang per foreach mit $message.Attachments.Add(...) an das Objekt ranhängen.
ach dazu habe ich noch ne Fehlermeldung bekommen... Vielleicht kann die es genauer sagen
01.
Ausnahme beim Aufrufen von "Add" mit 1 Argument(en):  "Der Wert darf nicht NULL sein.
02.
Parametername: item"
03.
In C:\Users\XXXX\Desktop\mailshell\Mailshell.ps1:28 Zeichen:1
04.
+ $message.Attachments.Add($anhang.file)
05.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
06.
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
07.
    + FullyQualifiedErrorId : ArgumentNullException
08.

09.
UK19000001.PDF UK19000002.PDF UK19000003.PDF UK19000004.PDF UK19000005.PDF UK19000006.PDF UK19011316.PDF UK19011454.PDF
Bitte warten ..
Mitglied: Rockett
15.03.2019, aktualisiert um 14:09 Uhr
So hat es funktioniert

01.
foreach ($pdf in $anhang){
02.
  
03.
  $message.Attachments.Add($pdf.FullName)
04.

05.
}
06.

07.
 
Bitte warten ..
Mitglied: SlainteMhath
15.03.2019 um 14:10 Uhr
Der Wert darf nicht NULL sein.
...
Add($anhang.file)
Jo, das kommt davon, wenn man sich einfach Properties ausdenkt

Aber wie gesagt: Foreach ist dein Freund...
Bitte warten ..
Mitglied: Pjordorf
15.03.2019 um 14:16 Uhr
Bitte warten ..
Mitglied: Rockett
15.03.2019, aktualisiert um 14:32 Uhr
Jo, das kommt davon, wenn man sich einfach Properties ausdenkt

das Feier ich grad Ja sorry ich mach das erst seid paar Tagen hab davon eigentlich gar keine Ahnung und hier und da hilft es halt sorry an dieser Stelle für meine Inkompetenz


Jetzt würde ich gerne 2 Scrips kombinieren... Das erste soll IMMER ausgeführt werden... am ende würde ich gerne einfach das Zweite anhängen ABER erst eine Abfrage starten die so lautet:

PDF Dateien erstellt, möchten Sie fortfahren und sie als Mail versenden?

[JA] [NEIN]

wenn der User JA drückt läuft das Script einfach weiter
wenn er NEIN drückt springt es zum ende

könnt ihr mir da auch helfen?
Bitte warten ..
Mitglied: freesolo
LÖSUNG 15.03.2019, aktualisiert um 14:39 Uhr
01.
if ((read-host 'Möchten Sie übers Wasser gehen [J/N]?') -ne 'j' ) {exit}
Wäre ja auch zu einfach mal nachzuschlagen
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 14:47 Uhr
Wäre ja auch zu einfach mal nachzuschlagen

ich schlage die ganze zeit nach... ist immer einfach zu sagen wenn man sich damit auskennt. Ich weis nicht mal nach was ich googeln soll...

habe 20 Tabs auf mit suchen wie:

jump in powershell
goto in powershell
abfrage ja nein powershell...
usw...

wenn man eben die befehle nicht kennt kann man danach relative schlecht suchen
Bitte warten ..
Mitglied: freesolo
15.03.2019, aktualisiert um 14:50 Uhr
Nicht nur suchen sondern mal vernünftig in die Grundlagen einlesen, dann muss man auch nicht jeden Furz in einem AdminForum erfragen!
https://www.guru99.com/powershell-tutorial.html
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 14:52 Uhr
EDIT: habe deinen Link nicht ganz verstanden... der User soll sein eine Eingabe machen? Aus einem anderen script könnte ich mir einen Prompt raus nehmen das ich gesehen habe, das Textfeld entfernen und nur die Buttons lassen.

Aber wie setzte ich dann fest das er weiter im script geht oder beendet?
Ich denke hiermit schaffe ich mir ein Fenster zu erstellen welches JA oder NEIN fragt... wie geht es dann weiter? WIe verarbeitet er die aktion und vor allem wie springt er zum ende bei NEIN?

01.
Add-Type -AssemblyName System.Windows.Forms
02.
Add-Type -AssemblyName System.Drawing
03.

04.
$form = New-Object System.Windows.Forms.Form
05.
$form.Text = 'Data Entry Form'
06.
$form.Size = New-Object System.Drawing.Size(300,200)
07.
$form.StartPosition = 'CenterScreen'
08.

09.
$OKButton = New-Object System.Windows.Forms.Button
10.
$OKButton.Location = New-Object System.Drawing.Point(75,120)
11.
$OKButton.Size = New-Object System.Drawing.Size(75,23)
12.
$OKButton.Text = 'OK'
13.
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
14.
$form.AcceptButton = $OKButton
15.
$form.Controls.Add($OKButton)
16.

17.
$CancelButton = New-Object System.Windows.Forms.Button
18.
$CancelButton.Location = New-Object System.Drawing.Point(150,120)
19.
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
20.
$CancelButton.Text = 'Cancel'
21.
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
22.
$form.CancelButton = $CancelButton
23.
$form.Controls.Add($CancelButton)
24.

25.
$label = New-Object System.Windows.Forms.Label
26.
$label.Location = New-Object System.Drawing.Point(10,20)
27.
$label.Size = New-Object System.Drawing.Size(280,20)
28.
$label.Text = 'Please enter the information in the space below:'
29.
$form.Controls.Add($label)
30.

31.
$textBox = New-Object System.Windows.Forms.TextBox
32.
$textBox.Location = New-Object System.Drawing.Point(10,40)
33.
$textBox.Size = New-Object System.Drawing.Size(260,20)
34.
$form.Controls.Add($textBox)
35.

36.
$form.Topmost = $true
37.

38.
$form.Add_Shown({$textBox.Select()})
39.
$result = $form.ShowDialog()
40.

41.
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
42.
{
43.
    $x = $textBox.Text
44.
    $x
45.
}
Bitte warten ..
Mitglied: Pjordorf
15.03.2019 um 14:53 Uhr
Hallo,

Zitat von freesolo:
sondern mal vernünftig in die Grundlagen einlesen
Hab mal einen Arbeitskollegen gehabt der diese Form der Lektüre auswendig herunterbetten konnte, nur der konnte nichts davon in der Praxis umsetzen. Aber seine Kaffe war einfach Spitze. Er wurde Mr.Bücherei genannt
Bitte warten ..
Mitglied: freesolo
15.03.2019, aktualisiert um 14:54 Uhr
Steht oben schon in meinem vorletzten Post als Code, einfach an der gewünschten Stelle einfügen!!
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 14:54 Uhr
Nicht nur suchen sondern mal vernünftig in die Grundlagen einlesen, dann muss man auch nicht jeden Furz in einem AdminForum erfragen!

da hast du auch Recht. Hatte jetzt eine Woche vom Chef bekommen in der ich dieses "Projekt" in Angriff nehmen darf. Der ist Total anti "PC macht dinge von selbst". Die Woche ist jetzt um in einer Stunde... Ich hätte neben der Arbeit nicht noch geschafft eine programmiersprache zu lernen.. sorry
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 14:55 Uhr
Steht oben schon in meinem vorletzten Post als Code, einfach an der gewünschten Stelle einfügen!!

sorry hatte es nicht gesehen hatte mich direkt mit dem Link befasst! Danke
Bitte warten ..
Mitglied: freesolo
15.03.2019 um 14:55 Uhr
Typischer Freitag halt .
Bitte warten ..
Mitglied: Pjordorf
15.03.2019 um 14:57 Uhr
Hallo,

Zitat von Rockett:
EDIT: habe deinen Link nicht ganz verstanden...
Das verstehst du nicht?

wie geht es dann weiter? WIe verarbeitet er die aktion und vor allem wie springt er zum ende bei NEIN?
Grundlagen der Programmierung und deren Strukturen und Schleifen erlernen, dann erlernen wie es in Powershell zu machen ist und dann nochmals hierher in eine paar Wochen zurück kommen

Gruß,
Peter
Bitte warten ..
Mitglied: Pjordorf
15.03.2019 um 15:01 Uhr
Hallo,

Zitat von Rockett:
Der ist Total anti "PC macht dinge von selbst".
Dann baue ihm ein Holodeck und setze ihn im gleichen Raum seines Raumschiff Enterprise Computers. Da passiert fast alles von alleine

Gruß,
Peter
Bitte warten ..
Mitglied: Rockett
15.03.2019 um 15:39 Uhr
Glaub mir wenn er da drinnen ist reißt er alle Konsolen ab und bestückt diese mit Lenkrädern und Seilzügen
Bitte warten ..
Mitglied: freesolo
LÖSUNG 15.03.2019, aktualisiert um 15:43 Uhr
Übrigens, den Batzen für eine Messagebox mit Ja/Nein von oben kannst du in einen Einzeiler packen und ersetzen durch ...
01.
Add-Type -A System.Windows.Forms
02.
if ([System.Windows.Forms.MessageBox]::Show("Willst du weitermachen?","Frage",[System.Windows.Forms.MessageBoxButtons]::YesNo,[System.Windows.Forms.MessageBoxIcon]::Question) -eq 'No'){exit}
p.s. Bitte jetzt noch den Beitrag als gelöst kennzeichnen, deine Ursprungsfrage wurde beantwortet!
Bitte warten ..
Mitglied: Kraemer
15.03.2019 um 15:45 Uhr
Zitat von SlainteMhath:

Das ist jetzt ja andere code als oben...
Das ist seine Art, das Thema interessant zu halten . Ich durfte darunter auch schon gewaltig leiden
Bitte warten ..
Mitglied: H41mSh1C0R
15.03.2019 um 15:47 Uhr
Zitat von Rockett:
da hast du auch Recht. Hatte jetzt eine Woche vom Chef bekommen in der ich dieses "Projekt" in Angriff nehmen darf. Der ist Total anti "PC macht dinge von selbst". Die Woche ist jetzt um in einer Stunde... Ich hätte neben der Arbeit nicht noch geschafft eine programmiersprache zu lernen.. sorry

Nur weil dein Chef kein Plan hat und die Aufgabe bei dir abkippt, sollte man nicht zu allem Ja und Amen sagen!
Wenn du genauso wenig Plan hast aber gewillt bist dich einzuarbeiten, dann vertrete den Standpunkt das du dafür Zeit benötigst!

Scheenes Wochenende. =)
Bitte warten ..
Mitglied: Rockett
16.03.2019, aktualisiert um 23:18 Uhr
Danke für die Massage Box Freesolo!

@H41mSh1C0R
Ja er will es ja gar nicht... er muss nicht die Arbeit machen sondern ich Ihm kann es egal sein das ich deshalb keine Zeit mehr habe irgendwas anderes zu tun

Ich habe jetzt ein ganz blödes Problem... und zwar habe ich noch eine move-item die problemlos ausgelöst wird wenn ich das Script aus der ISE starte. Schließe ich diese aber und starte das Scipt per Rechtsklick dann wird das letzte move-item nicht ausgeführt. Ich bekomme die Fehlermeldung das die Dateien benutzt werden und deshalb nicht verschoben werden können.

Habe schon versucht wie ihr am ende sehen könnt über "invoke-expression" das letzte Move-Item im nächsten Script zu starten aber ich bekomme die selbe Fehlermeldung... Wie gesagt merkwürdig ist das es problemlos funktioniert wenn ich es in der ISE laufen lasse.

01.
$Send='C:\XXX\Archiv\Versendet\'
02.
$Path='C:\XXX\New\'
03.
$Archive='C:\XXX\Archiv\Rechnungen\'
04.
$PdfTk='C:\PDFtk\pdftk.exe'
05.

06.

07.
Add-Type -A System.Windows.Forms
08.
if ([System.Windows.Forms.MessageBox]::Show("PDF Dateien erstellen?","PDF?",[System.Windows.Forms.MessageBoxButtons]::YesNo,[System.Windows.Forms.MessageBoxIcon]::Question) -eq 'No'){exit}
09.

10.
foreach ($Folder in Get-ChildItem -Path $Path -Directory){
11.
    $FileList=@()
12.

13.
    
14.

15.
    if (Test-Path -Path (Join-Path -Path $Folder.FullName -ChildPath "aeg_rg_?.pdf")){
16.
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder.FullName -ChildPath "aeg_rg_?.pdf")
17.
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder.FullName -ChildPath "dl?_rg.pdf")
18.
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder.FullName -ChildPath "Ln?.pdf")
19.

20.
        $MergedFile=Join-Path -Path $Path -ChildPath ((Split-Path -Path $Folder -Leaf)+".PDF")
21.

22.
        $Argumentlist=($FileList -Join " ")+" cat output $MergedFile"
23.

24.
        Start-Process -FilePath $PdfTk -Argumentlist $Argumentlist -Wait
25.

26.
        if (Test-Path -Path $MergedFile){
27.
        Move-Item -Path $Folder.FullName -Destination $Archive
28.
        (Get-Date -uFormat "Am %Y-%m-%d um %H.%M.%S erstellt ")+$MergedFile | Out-File c:\XXX\XXX_log.log -append
29.
}
30.
    }
31.
    
32.
    
33.
}
34.

35.

36.

37.
#ab hier sendmail wenn oben mit j bestätigt
38.

39.

40.
Add-Type -A System.Windows.Forms
41.
if ([System.Windows.Forms.MessageBox]::Show("Jetzt als E-Mail versenden?","E-Mail?",[System.Windows.Forms.MessageBoxButtons]::YesNo,[System.Windows.Forms.MessageBoxIcon]::Question) -eq 'No'){exit}
42.

43.

44.
$htmlbody='C:\XXX\Archiv\shell\XXX.html'
45.
$anhang=Get-ChildItem -Path $Path -File
46.

47.
# An und Absender
48.
$MailFrom = "XXX@XXX.net"
49.
$MailTo = "XXX@XXX.de"
50.

51.
# Login ermitteln
52.
$MyCredential = Get-Credential -Message "Bitte geben Sie ihr Password ein" -UserName "XXX@XXX.net"
53.

54.
$MyCredential.UserName
55.
$MyCredential.Password
56.

57.
# Login Credentials
58.
$Username = $MyCredential.UserName
59.
$Password = $MyCredential.Password
60.

61.
# Server Info
62.
$SmtpServer = "mail.gmx.com"
63.
$SmtpPort = "25"
64.

65.

66.
# Message zeug
67.
$MessageSubject = "Ihre Rechnungen von der XXXXGmbH" 
68.
$Message = New-Object System.Net.Mail.MailMessage $MailFrom,$MailTo
69.
$Message.IsBodyHTML = $true 
70.

71.
foreach ($pdf in $anhang){
72.
  
73.
  $message.Attachments.Add($pdf.FullName)
74.

75.
}
76.

77.

78.

79.
$Message.Subject = $MessageSubject
80.
$Message.Body = Get-Content $htmlbody
81.

82.

83.
# Construct the SMTP client object, credentials, and send
84.
$Smtp = New-Object Net.Mail.SmtpClient($SmtpServer,$SmtpPort)
85.
$Smtp.EnableSsl = $true
86.
$Smtp.Credentials = New-Object System.Net.NetworkCredential($Username,$Password)
87.
$Smtp.Send($Message)
88.

89.

90.

91.
#invoke-expression -Command C:\XXX\Archiv\shell\move.ps1
92.
#Start-Sleep -s 2
93.

94.
$Item=Get-ChildItem -Path $Path -File
95.
Move-Item -Path $Item.Fullname -Destination $Send #-Force
96.

97.

98.
foreach ($senditem in $Item){
99.
(Get-Date -uFormat "+$senditem am %Y-%m-%d um %H.%M.%S versendet an $MailTo ") | Out-File c:\XXX\XXX_log.log -append
100.

101.

102.

103.
}
Bitte warten ..
Mitglied: H41mSh1C0R
16.03.2019 um 23:50 Uhr
Zitat von Rockett:
@H41mSh1C0R
Ja er will es ja gar nicht... er muss nicht die Arbeit machen sondern ich Ihm kann es egal sein das ich deshalb keine Zeit mehr habe irgendwas anderes zu tun

Müssen tun wir im Leben nur eines! Den Löffel schmeißen. =)
Die Arbeit erledigen ist das eine, dafür die eigene Substanz opfern etwas anderes.
Wir sind ja keine Leibeigenen!
Wenn dein Chef ein Interesse hat das sein Laden läuft, dann sollte ihn auch das Interessieren was auf der Strecke bleibt.
Wenn ihn das nicht interessiert, dann wird der Laden irgendwann zugemacht und die MA sind weg. =)
Bitte warten ..
Mitglied: Rockett
17.03.2019 um 11:43 Uhr
Das hast du gut gesagt dafür muss man aber lernen nicht nur kurzfristig zu denken
Bitte warten ..
Mitglied: Rockett
18.03.2019 um 12:39 Uhr
So habe jetzt die besagte Fehlermeldung:

01.
Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
02.
In C:\XXX\Archiv\shell\XXX.ps1:111 Zeichen:1
03.
+ Move-Item -Path $Item.Fullname -Destination $Send
04.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
05.
    + CategoryInfo          : WriteError: (C:\XXX\New\XXX.PDF:FileInfo) [Move-Item], IOException
06.
    + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
07.
 
08.
Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
09.
In C:\XXX\Archiv\shell\XXX.ps1:111 Zeichen:1
10.
+ Move-Item -Path $Item.Fullname -Destination $Send
11.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12.
    + CategoryInfo          : WriteError: (C:\XXX\New\XXX.PDF:FileInfo) [Move-Item], IOException
13.
    + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
14.
 
15.
Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
16.
In C:\XXX\Archiv\shell\XXX.ps1:111 Zeichen:1
17.
+ Move-Item -Path $Item.Fullname -Destination $Send 
18.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19.
    + CategoryInfo          : WriteError: (C:\XXX\New\XXX.PDF:FileInfo) [Move-Item], IOException
20.
    + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
21.
 
22.
Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
23.
In C:\XXX\Archiv\shell\XXX.ps1:111 Zeichen:1
24.
+ Move-Item -Path $Item.Fullname -Destination $Send 
25.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26.
    + CategoryInfo          : WriteError: (C:\XXX\New\XXX.PDF:FileInfo) [Move-Item], IOException
27.
    + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
28.
 
29.
Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
30.
In C:\XXX\Archiv\shell\XXX.ps1:111 Zeichen:1
31.
+ Move-Item -Path $Item.Fullname -Destination $Send 
32.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33.
    + CategoryInfo          : WriteError: (C:\XXX\New\XXX.PDF:FileInfo) [Move-Item], IOException
34.
    + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
Bitte warten ..
Mitglied: Pjordorf
18.03.2019, aktualisiert um 13:40 Uhr
Hallo,

Zitat von Rockett:
Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
Und, ist da was in Verwendung? Was ist mit der C:\XXX\New\XXX.PDF?
Lesen können meistens viele. Schreiben immer nur einer.

Gruß,
Peter
Bitte warten ..
Mitglied: Rockett
18.03.2019 um 13:53 Uhr
Nein da ist nichts in Verwendung... Aber sobald ich Powershell schließe ist es nicht mehr in Verwendung. Wenn ich den ganzen Code durchlaufen lasse dann klappt das verschieben nicht. Wenn ich nur den Verschieben Teil durchlaufen lasse klappt es problemlos... Also wird das Script selber wohl irgendwie die Dateien in Verwendung haben.

Habe vor dem verschieben auch mal nen start-sleep für 30 Sekunden eingebaut. Funktioniert nicht.
Bitte warten ..
Mitglied: Pjordorf
18.03.2019 um 14:03 Uhr
Hallol

Zitat von Rockett:
Nein da ist nichts in Verwendung... Aber sobald ich Powershell schließe ist es nicht mehr in Verwendung
D.h. du weißt gar nicht was bei eine Öffnen einer Datei zun Schreiben wirklich passiert. Und deine Aussage das wenn du Powershell zumachst, das dann die eine Datei nicht mehr in Verwendung ist, hat dir nicht was anderes als dein
Nein da ist nichts in Verwendung...
gezeigt?


Also wird das Script selber wohl irgendwie die Dateien in Verwendung haben.
So ist es dann.

Habe vor dem verschieben auch mal nen start-sleep für 30 Sekunden eingebaut. Funktioniert nicht.
https://docs.microsoft.com/de-de/powershell/scripting/components/ise/how ...
https://www.itprotoday.com/powershell/editing-and-debugging-scripts-powe ...
https://www.itprotoday.com/powershell/debugging-windows-powershell
https://www.msxfaq.de/code/powershell/psdebugging.htm
https://www.sharepoint-journey.com/debug-powershell-scripts.html
https://mcpmag.com/articles/2017/05/25/understanding-debugging-breakpoin ...

Gruß,
Peter
Bitte warten ..
Ähnliche Inhalte
Windows Server

Powershell Skript setzt Rechte nicht auf vorhandene untergeordnete Ordner

Frage von rodelkingWindows Server1 Kommentar

Hallo, ich habe folgendes Skript: $UserInfoFile = Import-Csv 'C:\csv\Schueler-Klasse.csv' –Delimiter ';' Foreach ($Name in $UserInfoFile) { $samAccountName = $Name.Name ...

Batch & Shell

Powershell Prozess überwachen und evtl. neu starten

gelöst Frage von adminstBatch & Shell6 Kommentare

Hallo zusammen Ich habe einen Dienst welcher per Batch gestartet wird und den MainWindowTitle "Prod 1-2 Socket" hat. Der ...

Windows Server

Ordnerumleitung per GPO setzt keine Benutzerrechte

gelöst Frage von VincentGdGWindows Server3 Kommentare

Moin. Mein Kollege hat schon vor längerer Zeit (bevor ich dazu stieß) eine Ordnerumleitung von "Download" per GPO eingerichtet. ...

Windows Server

Windows AD setzt Gruppenrichtlinien nicht (mehr) um

gelöst Frage von D1Ck3nWindows Server6 Kommentare

Hallo zusammen, die Drucker bei uns werden per Gruppenrichtlinie an die User verteilt. Dazu habe ich eine Richtlinie für ...

Neue Wissensbeiträge
Sicherheits-Tools
Putty hat heftige Bugs korrigiert!
Information von Lochkartenstanzer vor 1 TagSicherheits-Tools5 Kommentare

Moin, Wie man aus herauslesen kann, sind in den Versionen vor 0.71 gravierende Bugs, die es angeraten erscheinen lassen, ...

Off Topic
Sachen die die Welt nicht braucht - Platz 1
Tipp von brammer vor 4 TagenOff Topic18 Kommentare

Hallo, ich habs als Tipp angelegt als Erfahrungsbericht nein Danke brammer

Humor (lol)
Spirit of Health-Kongress in Berlin
Information von AnkhMorpork vor 4 TagenHumor (lol)5 Kommentare

tgif! Beim dritten Spirit of Health-Kongress trafen sich am Wochenende Alternativmediziner und Naturheilkundler im Maritim Hotel Berlin, um sich ...

Windows 7

Updates zum Nachrüsten des SHA-2-Support für Windows 7 SP1, Windows Server 2008 (R2) und WSUS 3.0 SP2 sind da

Information von kgborn vor 5 TagenWindows 7

Wie bereits früher angekündigt (Windows 7 u. Server 2008 (R2) SHA-2-Update kommt am 12. März 2019) hat Microsoft die ...

Heiß diskutierte Inhalte
Cloud-Dienste
Remotedesktopverbindungen beeinflussen sich gegenseitig
gelöst Frage von Samy89Cloud-Dienste15 Kommentare

Moin, ich habe mehrere RDPs gleichzeitig laufen, auf denen jeweils ein Script via Powershell läuft. In diesem Prozess benutzt ...

DNS
Größere DNS Probleme nach zweitem DC. Eigentlich sollte es auch dadurch besser werden
Frage von TeWutzDNS12 Kommentare

Hallo zusammen, nachdem ich letzte Woche erfolgreich einen zweiten DC ) an den Start gebracht habe melden sich weiterhin ...

LAN, WAN, Wireless
Switch als Verbindung von 2 Netzwerken
gelöst Frage von Lutz-ReLAN, WAN, Wireless12 Kommentare

Guten Tag Ich hab folgendes Problem 2 Rechner und 2 IP Kameras sind ohne dhcp in einen IP4 Netzwerk ...

Netzwerkgrundlagen
Reicht 10GBit Uplink Port für Stacking für ein 10GBit Switch?
gelöst Frage von walnickNetzwerkgrundlagen12 Kommentare

Hallo, Ich habe eine frage. Ich überlege gerade 2 neue Switche von CiscoSG350XG-24F  zu kaufen und die als Core ...