我有几个 Exchange 2010 PowerShell 脚本想要作为计划任务运行。
如果我使用“以不同用户身份运行”启动 PowerShell,我可以运行脚本并且它们可以正确执行。
如果我使用同一个用户安排任务,该任务将永远保持运行状态。
我如何才能知道任务卡在哪里了?
作为参考,下面是我启用 Exchange 功能的方法:
. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto
以下是我尝试从任务计划程序运行脚本的方法:
- powershell -command“&{。'c:\windows\script.ps1'}”
- powershell -文件'c:\windows\script.ps1'
- powershell -file “c:\windows\script.ps1”
结果都一样。呼呼...
答案1
您需要修改执行策略,或者将其指定-ExecutionPolicy Bypass
为命令行参数。
powershell -Command "<path to .ps1 script>" -ExecutionPolicy Bypass
答案2
不确定您是否这样做,但当我通过任务计划程序运行 PowerShell 脚本时,我使用“启动程序”操作并选择 powershell,然后从那里添加参数。这可能是您在这里做的事情,但有点不清楚。以下是屏幕截图:
根据 TheCompWiz 的执行策略也可能是一个问题。
答案3
我也遇到过同样的问题。对于我来说,解决方案是指定“起始于”目录(我的脚本会读取文件内容,但由于我没有指定文件的完整路径,因此无法找到该文件)。
答案4
尝试在脚本末尾添加 [taskkill /f /im "powershell.exe"],这将终止所有“powershell.exe”进程。我不知道如何终止当前的 power-shell 进程(相当于 [cmd.exe /c])。但它可以解决问题。