提问人:dpresnell90 提问时间:9/26/2023 更新时间:9/27/2023 访问量:59
如何防止powershell在脚本执行过程中打开两个窗口?
How to prevent powershell from opening two windows during script execution?
问:
我有一个简单的powershell脚本,它可以在执行时自动通过电子邮件发送XML文件。
我有一个用 Visual Basic 编写的 VB.NET 控制台应用程序,它会在满足某些参数后调用程序中的 powershell 脚本来执行。
powershell 脚本的调用有效,powershell 按预期执行,但无论出于何种原因,powershell 脚本都会执行两次。这通常不会成为问题,但因此,当它应该只发送一封电子邮件时,它会发送重复的电子邮件。
下面是调用 powershell 脚本的代码:
Public Sub SendDaEmailMakeXMLFile()
Using p As Process = New Process
p.StartInfo = New ProcessStartInfo() With {
.CreateNoWindow = True,
.UseShellExecute = True,
.FileName = "C:\SVMXEmailAutomation.ps1"
}
p.Start()
p.WaitForExit()
p.Close()
End Using
End Sub
第二个窗口弹出并立即执行 如果我删除如下所示的 WaitforExit() 命令:
如果我保留 WaitforExit() 命令,第一个窗口将按预期工作,关闭,然后第二个实例将直接弹出并执行。
我在语法上犯了错误吗?我的日志上没有错误输出。
感谢您的评论。
答:
0赞
dpresnell90
9/27/2023
#1
感谢大家的帮助和帮助!
在浏览日志文件并使用断点后,我确定将代码放置在其自己的子类中时,它会导致代码执行两次。我只是删除了 SendDaEmailMakeXMLFile() 公共子类,并将前面列出的代码放在完整程序的主子正文中。
这样做只会导致代码按预期执行一次。 希望这将对将来遇到此问题的其他人有所帮助!
评论
.UseShellExecute = False,
.FileName
.Arguments
$"-File ""{[path to your script]}"""