繁体   English   中英

在任务计划程序中运行PowerShell

[英]Running PowerShell in Task Scheduler

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

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

D:\script.ps1

powershell.exe它可以正常工作。

当我在Task Scheduler中计划它时,什么也没有发生。

我尝试将其设置为“程序/脚本”:

powershell
Powershell.exe
powershell.exe

添加参数:

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

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

对排定的任务进行故障排除在后方很麻烦,因为您无法真正看到正在发生的事情。 这些是您可能要检查的一些事项:

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

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

  • 检查您的任务是否实际终止或该进程是否仍在运行(通过Process ExplorerGet-Process ,Task Manager等)。

  • 检查上次运行结果中命令的退出代码。

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

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

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

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

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

     New-EventLog -Source MyEventSource -LogName Application 

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

我所面对的主要观察结果很少:

  1. 而不是只给powershell.exe ,尝试给出全部PS路径C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe

  2. 许可是另一个需要关注的问题。 您正在通过其运行任务的用户可能没有运行该任务的权限。

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

  4. 确保您以“ 最高特权”运行任务。

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

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

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

我没有检查:不要存储密码,现在它可以在不登录网络的情况下运行。

和平

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM