rockett
Goto Top

Powershell: Fileliste bekommen und als neue Variable setzten

Hallo Zusammen,

ich würde gerne die Informationen die ich damit:

$Path='C:\Test\'  

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:

    $abs="name@gmx.net"  
    $empf="name2@gmx.net"  
    $sub="Betreff"  
    $smtp="mx00.emig.gmx.net"  
    $msg="test2"  


    
    Send-MailMessage –To $empf –Subject $sub –Body "$msg" –SmtpServer $smtp –From $abs  

Content-Key: 429012

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

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

Member: SlainteMhath
SlainteMhath Mar 15, 2019 updated at 08:06:39 (UTC)
Goto Top
Moin,

$files=get-ChildItem ...
Send-MailMessage ... -attachments $files ...

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

lg,
Slainte
Member: Rockett
Rockett Mar 15, 2019 at 08:18:59 (UTC)
Goto Top
Super Danke face-smile

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?
Member: SlainteMhath
SlainteMhath Mar 15, 2019 at 08:44:23 (UTC)
Goto Top
Was spricht denn dagegen den echten Absender einzusetzen?
Member: Kraemer
Kraemer Mar 15, 2019 at 08:45:20 (UTC)
Goto Top
Moin,
Zitat von @Rockett:
so wie ich es jetzt mache verschicke ich die dateien ja "Anonym" ...
wie kommst du denn da jetzt drauf?

Gruß
Member: Rockett
Rockett Mar 15, 2019 at 08:48:32 (UTC)
Goto Top
nichts. im gegenteil das soll auch so sein, wusste nur nicht ob das rechtlich ein problem ist face-smile aber habe jetzt ein einfaches script mit authentifizierung gefunden face-smile 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 face-smile

da noch nen Rat? Bzw ich google ja schon selber aber als Anfänger fehlen mir da die richtigen Worte für Google face-smile
Member: Rockett
Rockett Mar 15, 2019 at 08:49:33 (UTC)
Goto Top
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.
Member: Kraemer
Kraemer Mar 15, 2019 at 08:57:48 (UTC)
Goto Top
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
Member: Kraemer
Kraemer Mar 15, 2019 at 09:03:58 (UTC)
Goto Top
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 face-smile
https://docs.microsoft.com/de-de/powershell/scripting/samples/creating-a ...
Member: Rockett
Rockett Mar 15, 2019 at 10:20:43 (UTC)
Goto Top
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
Member: Pjordorf
Pjordorf Mar 15, 2019 at 11:16:08 (UTC)
Goto Top
Hallo,

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

Gruß,
Peter
Member: Rockett
Rockett Mar 15, 2019 at 11:42:52 (UTC)
Goto Top
Sicher? Wie viele Konten hast du denn bei GMX?

ja okay hab jetzt nur an mich und meine Freundin geschickt face-smile Naja hab es ja jetzt zum Glück mit authentifizierung geschafft.
Member: Kraemer
Kraemer Mar 15, 2019 at 11:47:09 (UTC)
Goto Top
Zitat von @Rockett:

Sicher? Wie viele Konten hast du denn bei GMX?

ja okay hab jetzt nur an mich und meine Freundin geschickt face-smile Naja hab es ja jetzt zum Glück mit authentifizierung geschafft.
guck dir mal die Header an - da steht als Absender DEINE Mailadresse!
Member: Pjordorf
Pjordorf Mar 15, 2019 at 11:48:14 (UTC)
Goto Top
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
Member: Rockett
Rockett Mar 15, 2019 at 12:06:30 (UTC)
Goto Top
Da steht die IP und alles drinne... auch mein Nachnahme... woher er die info nimmt weiß ich allerdings nicht face-smile Aber keine andere email adresse. Kann auch nicht sein da hier kein Mailprogramm eingerichtet ist...
Member: Rockett
Rockett Mar 15, 2019 updated at 12:18:45 (UTC)
Goto Top
Könnt ihr mir sagen was ich hier falsch mache?

$message.Attachments.Add($anhang) 

$anhang hat auf jedenfall die richtigen infos weil write-host $anhang sie mir im Anschluss zeigt...

hier der ganze Code:

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

# Sender and Recipient Info
$MailFrom = "XXX@XXX.net"  
$MailTo = "XXX@XXX.de"  

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

$MyCredential.UserName
$MyCredential.Password

# Sender Credentials
$Username = $MyCredential.UserName
$Password = $MyCredential.Password

# Server Info
$SmtpServer = "mail.gmx.com"  
$SmtpPort = "25"  


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


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

write-host $anhang
Member: Pjordorf
Pjordorf Mar 15, 2019 at 12:20:31 (UTC)
Goto Top
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
Member: SlainteMhath
SlainteMhath Mar 15, 2019 at 12:28:14 (UTC)
Goto Top
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.
Member: Rockett
Rockett Mar 15, 2019 at 12:43:54 (UTC)
Goto Top
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
Member: Rockett
Rockett Mar 15, 2019 updated at 12:48:23 (UTC)
Goto Top
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
Ausnahme beim Aufrufen von "Add" mit 1 Argument(en):  "Der Wert darf nicht NULL sein.  
Parametername: item"  
In C:\Users\XXXX\Desktop\mailshell\Mailshell.ps1:28 Zeichen:1
+ $message.Attachments.Add($anhang.file)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : ArgumentNullException

UK19000001.PDF UK19000002.PDF UK19000003.PDF UK19000004.PDF UK19000005.PDF UK19000006.PDF UK19011316.PDF UK19011454.PDF
Member: Rockett
Rockett Mar 15, 2019 updated at 13:09:24 (UTC)
Goto Top
So hat es funktioniert face-smile

foreach ($pdf in $anhang){
  
  $message.Attachments.Add($pdf.FullName)

}

 
Member: SlainteMhath
SlainteMhath Mar 15, 2019 at 13:10:31 (UTC)
Goto Top
Der Wert darf nicht NULL sein.
...
Add($anhang.file)
Jo, das kommt davon, wenn man sich einfach Properties ausdenkt face-smile

Aber wie gesagt: Foreach ist dein Freund...
Member: Pjordorf
Pjordorf Mar 15, 2019 at 13:16:41 (UTC)
Goto Top
Member: Rockett
Rockett Mar 15, 2019 updated at 13:32:51 (UTC)
Goto Top
Jo, das kommt davon, wenn man sich einfach Properties ausdenkt

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


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?
Mitglied: 138810
Solution 138810 Mar 15, 2019 updated at 13:39:38 (UTC)
Goto Top
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. ...
Member: Rockett
Rockett Mar 15, 2019 at 13:47:19 (UTC)
Goto Top
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
Mitglied: 138810
138810 Mar 15, 2019 updated at 13:50:19 (UTC)
Goto Top
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
Member: Rockett
Rockett Mar 15, 2019 at 13:52:07 (UTC)
Goto Top
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?

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

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

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

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

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

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

$form.Topmost = $true

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

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    $x = $textBox.Text
    $x
}
Member: Pjordorf
Pjordorf Mar 15, 2019 at 13:53:03 (UTC)
Goto Top
Hallo,

Zitat von @138810:
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 genanntface-smile
Mitglied: 138810
138810 Mar 15, 2019 updated at 13:54:22 (UTC)
Goto Top
Steht oben schon in meinem vorletzten Post als Code, einfach an der gewünschten Stelle einfügen!!
Member: Rockett
Rockett Mar 15, 2019 at 13:54:25 (UTC)
Goto Top
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
Member: Rockett
Rockett Mar 15, 2019 at 13:55:48 (UTC)
Goto Top
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
Mitglied: 138810
138810 Mar 15, 2019 at 13:55:50 (UTC)
Goto Top
Typischer Freitag halt face-big-smile.
Member: Pjordorf
Pjordorf Mar 15, 2019 at 13:57:37 (UTC)
Goto Top
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
Member: Pjordorf
Pjordorf Mar 15, 2019 at 14:01:27 (UTC)
Goto Top
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
Member: Rockett
Rockett Mar 15, 2019 at 14:39:48 (UTC)
Goto Top
Glaub mir wenn er da drinnen ist reißt er alle Konsolen ab und bestückt diese mit Lenkrädern und Seilzügen face-smile
Mitglied: 138810
Solution 138810 Mar 15, 2019 updated at 14:43:58 (UTC)
Goto Top
Übrigens, den Batzen für eine Messagebox mit Ja/Nein von oben kannst du in einen Einzeiler packen und ersetzen durch ...
Add-Type -A System.Windows.Forms
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!
Member: Kraemer
Kraemer Mar 15, 2019 at 14:45:21 (UTC)
Goto Top
Zitat von @SlainteMhath:

Das ist jetzt ja andere code als oben...
Das ist seine Art, das Thema interessant zu halten face-wink . Ich durfte darunter auch schon gewaltig leiden
Member: H41mSh1C0R
H41mSh1C0R Mar 15, 2019 at 14:47:39 (UTC)
Goto Top
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. =)
Member: Rockett
Rockett Mar 16, 2019 updated at 22:18:35 (UTC)
Goto Top
Danke für die Massage Box Freesolo!

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

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.

$Send='C:\XXX\Archiv\Versendet\'  
$Path='C:\XXX\New\'  
$Archive='C:\XXX\Archiv\Rechnungen\'  
$PdfTk='C:\PDFtk\pdftk.exe'  


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

foreach ($Folder in Get-ChildItem -Path $Path -Directory){
    $FileList=@()

    

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

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

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

        Start-Process -FilePath $PdfTk -Argumentlist $Argumentlist -Wait

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



#ab hier sendmail wenn oben mit j bestätigt


Add-Type -A System.Windows.Forms
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}  


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

# An und Absender
$MailFrom = "XXX@XXX.net"  
$MailTo = "XXX@XXX.de"  

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

$MyCredential.UserName
$MyCredential.Password

# Login Credentials
$Username = $MyCredential.UserName
$Password = $MyCredential.Password

# Server Info
$SmtpServer = "mail.gmx.com"  
$SmtpPort = "25"  


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

foreach ($pdf in $anhang){
  
  $message.Attachments.Add($pdf.FullName)

}



$Message.Subject = $MessageSubject
$Message.Body = Get-Content $htmlbody


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



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

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


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



}
Member: H41mSh1C0R
H41mSh1C0R Mar 16, 2019 at 22:50:39 (UTC)
Goto Top
Zitat von @Rockett:
@H41mSh1C0R
Ja er will es ja gar nicht... er muss nicht die Arbeit machen sondern ich face-smile Ihm kann es egal sein das ich deshalb keine Zeit mehr habe irgendwas anderes zu tun face-smile

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. =)
Member: Rockett
Rockett Mar 17, 2019 at 10:43:31 (UTC)
Goto Top
Das hast du gut gesagt face-smile dafür muss man aber lernen nicht nur kurzfristig zu denken face-smile
Member: Rockett
Rockett Mar 18, 2019 at 11:39:44 (UTC)
Goto Top
So habe jetzt die besagte Fehlermeldung:

Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
In C:\XXX\Archiv\shell\XXX.ps1:111 Zeichen:1
+ Move-Item -Path $Item.Fullname -Destination $Send
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\XXX\New\XXX.PDF:FileInfo) [Move-Item], IOException
    + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
 
Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
In C:\XXX\Archiv\shell\XXX.ps1:111 Zeichen:1
+ Move-Item -Path $Item.Fullname -Destination $Send
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\XXX\New\XXX.PDF:FileInfo) [Move-Item], IOException
    + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
 
Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
In C:\XXX\Archiv\shell\XXX.ps1:111 Zeichen:1
+ Move-Item -Path $Item.Fullname -Destination $Send 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\XXX\New\XXX.PDF:FileInfo) [Move-Item], IOException
    + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
 
Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
In C:\XXX\Archiv\shell\XXX.ps1:111 Zeichen:1
+ Move-Item -Path $Item.Fullname -Destination $Send 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\XXX\New\XXX.PDF:FileInfo) [Move-Item], IOException
    + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
 
Move-Item : Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
In C:\XXX\Archiv\shell\XXX.ps1:111 Zeichen:1
+ Move-Item -Path $Item.Fullname -Destination $Send 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\XXX\New\XXX.PDF:FileInfo) [Move-Item], IOException
    + FullyQualifiedErrorId : MoveFileInfoItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
Member: Pjordorf
Pjordorf Mar 18, 2019 updated at 12:40:43 (UTC)
Goto Top
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
Member: Rockett
Rockett Mar 18, 2019 at 12:53:44 (UTC)
Goto Top
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.
Member: Pjordorf
Pjordorf Mar 18, 2019 at 13:03:30 (UTC)
Goto Top
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