2017-06-08 4 views
0

Ich verwende einen Standard-SendMessage-Befehl, um eine E-Mail in einem PowerShell-Skript zu senden. Ich möchte eine Protokolldatei anhängen, aber unglücklicherweise ist die Protokolldatei von einem übergeordneten Skript gesperrt.SendMessage Anhang senden, der gesperrt ist

Gibt es eine Möglichkeit, die Datei trotzdem als Anhang zu senden (ich will es nicht löschen oder schreiben)?

Ich weiß, ich kann die Datei mit Get-Content lesen, sollte ich diese Ausgabe in eine neue temporäre Datei pipe, die dann angehängt wird? Wenn das funktionieren würde, wie würde ich das tun?

+2

Locked Datei gesperrt ist. Sie könnten das Handle, das das Elternelement in dieser Datei hat, finden und mit Nachdruck schließen, aber ich würde das nicht empfehlen, da es die Dinge für den Elternprozess beschädigen könnte. Wenn Sie die Datei über 'Get-Content 'lesen können, sollte Ihr Mail-Client auch in der Lage sein, die Datei zu lesen. Wenn Sie die Kontrolle über den Elternteil haben, versuchen Sie, die Datei nicht ständig geöffnet zu lassen. Sonst würde ich sagen, dass du kein Glück hast. –

+1

Wenn der "Standard-SendMessage-Befehl", den Sie verwenden, "Send-MailMessage" ist, dann aktualisieren Sie bitte Ihre Frage, sonst fragen sich die Leute vielleicht, ob Sie etwas anderes verwenden (und das könnte sehr wichtig sein). –

+1

Und verwenden Sie wirklich Powershell-v1.0 (gemäß dem Tag)? Überprüfen Sie die Version von PowerShell mit '$ host'. Auch zum Thema Tags bezieht sich der Tag * sendmessage * auf eine Nicht-E-Mail-Funktion. –

Antwort

2

Copy-Item sollte funktionieren, wenn Sie den Inhalt mit Get-Content lesen können.

Kopieren Sie es als temporäre Datei, senden Sie es und löschen Sie es dann.

Copy-Item C:\My_log.log $env:TEMP 

Powershell 2.0 und höher

Send-MailMessage -Attachments $env:TEMP\My_log.log ....... 

Powershell 1.0 ->PowerShell Send Email

Remove-Item $env:TEMP\My_log.log 
+1

'Send-MailMessage' ist in PowerShell v1 nicht verfügbar. –