计划任务中的Exchange PowerShell永远运行


8

我有几个要作为计划任务运行的Exchange 2010 PowerShell脚本。

如果使用“以其他用户身份运行”启动PowerShell,则可以运行脚本并正确执行。

如果我使用同一用户计划任务,则该任务将永远处于“运行”状态。

如何确定任务卡在哪里?

作为参考,以下是启用Exchange内容的方法:

. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto

这是我尝试从任务计划程序运行脚本的方式:

  • powershell-命令“&{。'c:\ windows \ script.ps1'}”
  • powershell-文件'c:\ windows \ script.ps1'
  • powershell-文件“ c:\ windows \ script.ps1”

所有结果相同。......


派对晚了,但我有同样的行为。Register-ScheduledJob关闭PowerShell控制台和ISE后,使用PowerShell 永不“结束” 注册的计划任务确实结束了。
user4317867 '16

Answers:


3

您要么需要修改执行策略,要么将其指定-ExecutionPolicy Bypass为命令行参数。

powershell -Command "<path to .ps1 script>" -ExecutionPolicy Bypass

1
我在命令行参数中添加了ExecutionPolicy选项。没变; 任务仍然永远运行。
longneck

2

不知道这是怎么做的,但是当我通过任务计划程序运行PowerShell脚本时,我使用“启动程序”操作并选择powershell,然后从那里添加参数。那可能就是您在这里所做的,但是还不清楚。这是屏幕截图: 在此处输入图片说明

每个TheCompWiz执行策略也可能是一个问题。


对于powershell.exe来说,这甚至不是有效的命令行语法,而只是为了尝试它,我尝试了一下。任务立即失败。
longneck

有趣的是,因为我所有的日常Powershell任务都以这种方式运行,并且运行正常。
ZnewmaN 2012年

C:\ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe-命令“&'c:\ windows \ script.ps1'”
ZnewmaN 2012年

啊,有区别。您的屏幕截图未显示-command
longneck 2012年

是的,我个人实际上并不使用-command,但这可能是正确的用法。
ZnewmaN 2012年

0

我有同样的问题。在我的情况下,解决方案是指定“开始于”目录(我的脚本将读取找不到的文件内容,因为我未指定文件的完整路径)。


0

我有同样的问题,“ user279399”使用taskkill命令的注释超级有用,只需要修改即可。这是参数语法结尾处的解决方案

taskkill /f /fi "USERNAME eq domain\exchadmin" /im powershell.exe

此命令仅杀死在该用户帐户下运行的Powershell会话。最佳做法是拥有一个单独的Exchange管理员帐户来运行计划的任务。


-3

尝试添加到脚本的末尾[taskkill / f / im“ powershell.exe”],这将终止所有“ powershell.exe”进程。我不知道如何终止当前的Power Shell进程(相当于[cmd.exe / c])。但这可以解决问题。


而且如果正在运行另一个可能执行某些重要操作的powershell脚本怎么办?您会不问而就杀死这些进程吗?在生产环境上?作为例行程序?认真吗?
Esa Jokinen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.