none
While Schleife mit Out-File

    Frage

  • Hallo Zusammen,

    ich versuche momentan verzweifelt einen Dienst in Powershell zu erstellen, der den Inhalt eines Ordners ausließt und sobald eine neue Datei drin ist, eine Mail verschickt (mit Counter Option. Dies funktioniert soweit auch schon. Doch wenn ich die Schleife ein weiteres mal laufen lasse, heißt es immer, "Der Prozess kann nicht auf die Datei ... zugreifen, da sie von einen anderen Prozess verwendet wird.

    Hier kurz das Beispiel:


    while($true){ Get-ChildItem -Path xyz -recurse | Out-File ... Dann kommt der Mailversand mit der angehängten Datei.

    Start-Sleep -Seconds 300 }

    Meine Frage: Wie kann ich die Datei wieder freigeben, so dass sie neu geschrieben werden kann.

    Vielen Dank

    Daniel




    Mittwoch, 3. Oktober 2018 08:28

Antworten

Alle Antworten

  • Danke, hab den Fehler selbst gefunden. Für alle die das gleiche Problem haben, ihr müsst die Mail danach verwerfen.

    $EmailMessage.Dispose()

    Mittwoch, 3. Oktober 2018 08:39
  • Schau mal hier:
    https://gallery.technet.microsoft.com/scriptcenter/Powershell-FileSystemWatche-dfd7084b

    Dann musst du nicht bis zu 5 Minuten warten, bis die Datei versendet wird.

    Ansonsten:
    bei "$EmailMessage = $null" sorgt der Garbagecollector dann dafür. Die Variable solltest du auf jeden Fall leeren, da auch bei Dispose() der Speicher nicht freigegeben wird.

    • Als Antwort vorgeschlagen Simon.Schulte Freitag, 5. Oktober 2018 08:10
    Mittwoch, 3. Oktober 2018 09:45