任务计划程序进程中的CloseMainWindow()不会终止

问题描述 投票:0回答:4

在备份 PST 之前,我在 powershell 脚本中使用这个简单的行来关闭 Outlook:

Get-Process Outlook | %{ $_.CloseMainWindow() } | Out-File -Append -FilePath $LogFile

它可以从命令行完美运行,但是当我将其放入任务计划程序(Windows 7)时,Outlook 未关闭并且命令返回“False”。

该任务设置为从命令行以同一用户身份运行,并使用高权限进行尝试。

有人对此有任何想法吗?

非常感谢和最诚挚的问候,

RiOt

编辑: 好的,澄清一下情况:

在任务计划程序中的命令是: 批处理.bat

batch.bat的内容:

...  
powershell script.ps1  
...

script.ps1的内容:

...  
Get-Process Outlook | %{ $_.CloseMainWindow() } | Out-File -Append -FilePath $LogFile  
...
powershell scheduled-tasks
4个回答
0
投票

您如何在任务管理器中运行脚本?您是否尝试将其放入 .ps1 文件并以这种方式运行?


0
投票

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.closemainwindow.aspx

true 如果关闭消息发送成功; false 如果关联的进程没有主窗口或者主窗口被禁用(例如,如果正在显示模式对话框)。

我会启动 Windows 事件查看器并调试关闭事件未路由或被拒绝的原因。


0
投票

我会遇到从 Jenkins bat run 关闭应用程序的问题,但是当您从 cmd 行运行相同的脚本时,它工作正常。这两个命令在命令行中都可以正常工作,但从 Jenins 管道中它显示 True 但永远不会关闭应用程序。

获取流程应用程序 | Foreach-Object {$_.CloseMainWindow()}

获取流程应用程序 | % {$_.CloseMainWindow()}

获取流程应用程序 | ? {$_.CloseMainWindow() | $_.CloseMainWindow() |超出默认}

正确

只有以下方法适用于 cmd 行和 Jenins 管道。

获取流程应用程序 | ? {$_.CloseMainWindow() | $_.CloseMainWindow() |出站}

正确

希望这可能有用。


0
投票

https://superuser.com/questions/859043/need-batch-file-to-close-a-window-not-the-batch-window

powershell (ps xampp-control).CloseMainWindow() 用cmd或.bat文件编写的xampp-control仅对我有用,如果cmd以管理员身份运行,由于权限问题,我必须运行xampp-control.exe作为管理员。

© www.soinside.com 2019 - 2024. All rights reserved.