在任务计划程序中运行PowerShell

时间:2017-01-13 12:52:54

标签: windows powershell windows-server-2008-r2 taskscheduler

我使用PowerShell从电子邮件下载数据。

我想通过PowerShell运行此过程。当我像这样运行脚本时:

D:\script.ps1
powershell.exe

它可以正常工作。

当我在任务计划程序中安排它时,没有任何事情发生。

我尝试将它设置为程序/脚本:

powershell
Powershell.exe
powershell.exe

添加参数:

-executionpolicy bypass -file D:\script.ps1
-file D:\script.ps1
-file "D:\script.ps1"

没有任何作用。我正在使用Windows 2008 R2。

3 个答案:

答案 0 :(得分:3)

对计划任务进行故障排除是一件很痛苦的事,因为你无法真正看到正在发生的事情。这些是您可能想要检查的内容:

  • 检查您的命令行原则上是否有效,例如:通过从CMD运行它(在您的情况下尝试运行powershell.exe -File "D:\script.ps1")。如果这给你带来任何错误,你需要先修复它们。

  • 如果您打算以特定用户身份运行任务,请以该用户身份启动CMD并运行相同的命令行,以检查用户是否具有脚本正在执行的所有权限。

    < / LI>
  • 检查您的任务是否实际终止或进程是否仍在运行(通过Process ExplorerGet-Process,任务管理器,...)。

  • 检查上次运行结果以获取该命令的退出代码。

  • 启用计划任务的历史记录(操作→启用所有任务历史记录)。这将至少为您提供有关任务正在执行的操作,是否启动以及是否发生错误的信息。您需要管理权限才能启用任务历史记录。

  • 检查事件日志中是否有与任务运行相关的错误/警告。

  • 将日志记录语句添加到您正在运行的脚本中以记录进度信息。我个人更喜欢记录到事件日志,因为这可以避免文件系统权限问题。

    Write-EventLog -LogName Application -Source EventSystem -EventID 100 -EntryType Information -Message 'Your log message.'
    

    如果您拥有系统管理员权限,则可以注册自己的事件源,并在上述日志语句中使用该事件源,而不是滥用现有来源,如EventSystem

    New-EventLog -Source MyEventSource -LogName Application
    

进一步的帮助将在很大程度上取决于您按照这些步骤获得的结果以及您的实际脚本代码。

答案 1 :(得分:0)

我遇到的主要观察结果很少:

  1. 请尝试提供完整的PS路径powershell.exe,而不是只提供C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

  2. 许可是另一个问题。您运行任务的用户可能没有运行该任务的权限。

  3. 执行政策:确保使用-ExecutionPolicy Bypass绕过执行政策。

  4. 确保您使用最高权限运行任务。

  5. 最后,通过分析日志。

答案 2 :(得分:0)

我发现这个网站非常有用: http://www.microsoftpro.nl/2011/07/07/how-to-schedule-a-powershell-script-using-scheduled-tasks-in-windows-server-2008-r2/

我还更改了安全选项属性,但它有所帮助。

我没有检查:不存储密码,现在它运行时没有登录到网络。

和平