gpt4 book ai didi

powershell - 如何使用PowerShell执行外部控制台应用程序并将结果发送到电子邮件?

转载 作者:行者123 更新时间:2023-12-03 00:31:17 24 4
gpt4 key购买 nike

我需要执行一些定期的控制台应用程序(在控制台上),这些应用程序会给我一些结果...如何执行它并将其返回数据发送到我的电子邮件中?
我尝试使用[Diagnostics.Process]::Start()并启动了我的应用程序,但我不知道如何获取返回值...我不需要exitCode,我想要应用程序在屏幕上打印的文本。
使用PS V2 CTP3。

***更新

提出的解决方案效果很好,但是我有一个问题...我需要执行的该应用程序是firebird数据库中的gfix,现在我发现了一个问题,如果我在以下位置执行,则无法将gfix的输出重定向到文件命令提示行:

gfix.exe -v -f dabatase.gdb> c:\ test.txt

它在屏幕上打印输出,文件为空。
如果我尝试将其分配给变量也是一样...我不知道gfix与我使用的其他控制台应用程序有什么区别,但是看起来它的输出无法重定向。

有人看到吗?

***更新2

即使我使用Start-transcript / Stop-Transcript,尽管在屏幕上我看到gfix输出,但在文件上只有命令:/

***更新3

在这里找到解决方案
http://edn.embarcadero.com/br/article/25605

最佳答案

这样的事情可能会起作用:

# temporary file
$f = [io.path]::GetTempFileName()
# start process and redirect its output to the temp file
ping localhost > $f

# create and send email
$emailFrom = "user@yourdomain.com"
$emailTo = "user@yourdomain.com"
$subject = "results"
$body = (Get-Content $f) -join "`r`n"
$smtpServer = "your smtp server"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)

# delete the file
remove-item $f

我认为在这种情况下,不需要 [Diagnostics.Process]::Start()。除此之外,还有一个cmdlet Start-Process可以完成几乎相同的操作。

关于powershell - 如何使用PowerShell执行外部控制台应用程序并将结果发送到电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2154391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com