Dan*_*eny 8 powershell scheduled-tasks windows-server-2008-r2 powershell-3.0
我们有一些脚本可以使用PowerShell作为应用程序的一部分创建预定作业.最近测试它们时,我注意到它们中的一些总是立即失败,并且没有产生任何输出(它们甚至没有出现在Get-Job列表中).
经过多天的调整,我们已经设法将它隔离到任何设定为每周运行的工作.下面是一个脚本,它创建两个完全相同的作业.当我们在我们的域上运行它,并提供域用户的凭据,然后强制两个作业在任务计划程序GUI(右键单击 - >运行)中运行,每日运行正常(0x0结果),每周一个失败(0x41306).
注意:如果我不提供-Credential param,则两个作业都可以正常工作.如果任务是每周一次,并且以该域用户身份运行,则作业仅会失败.
我找不到有关为什么会发生这种情况的信息,也没有想到任何原因会导致每周工作的表现不同.任务计划程序中的"历史记录£"选项卡几乎没有任何有用的信息,只是"因用户请求而停止的任务"和"任务已终止",这两者都没有有用的信息:
任务计划程序终止"{Microsoft\Windows\PowerShell\ScheduledJobs\Test1"任务的"{eabba479-f8fc-4f0e-bf5e-053dfbfe9f62}"实例.任务计划程序停止任务"\ Microsoft\Windows\PowerShell\ScheduledJobs\Test1"的实例"{eabba479-f8fc-4f0e-bf5e-053dfbfe9f62}"作为用户"MyDomain\SomeUser"的请求.
怎么了?为什么每周任务的运行方式不同,我怎样才能解决这个问题呢?
这是Windows Server 2008 R2上的PowerShell v3.我一直无法在本地重现这一点,但我没有像我们的生产域中那样设置用户(我正在研究这个,但我想发布这个ASAP希望有人知道发生了什么!).
Import-Module PSScheduledJob
$Action =
{
"Executing job!"
}
$cred = Get-Credential "MyDomain\SomeUser"
# Remove previous versions (to allow re-running this script)
Get-ScheduledJob Test1 | Unregister-ScheduledJob
Get-ScheduledJob Test2 | Unregister-ScheduledJob
# Create two identical jobs, with different triggers
Register-ScheduledJob "Test1" -ScriptBlock $Action -Credential $cred -Trigger (New-JobTrigger -Weekly -At 1:25am -DaysOfWeek Sunday)
Register-ScheduledJob "Test2" -ScriptBlock $Action -Credential $cred -Trigger (New-JobTrigger -Daily -At 1:25am)
Run Code Online (Sandbox Code Playgroud)
编辑:按照snover的建议添加到Connect:
编辑:杰夫希克斯的一些额外信息
我使用您的代码在运行PS v3的2008 R2盒子上创建相同的作业.使用Start-Job从PowerShell运行的两个作业都运行良好.但是在GUI中,我为每周工作得到了同样的错误.
我在Windows 8上得到了相同的结果.有人告诉任务服务中止.我测试了一些其他设置,但它们没有效果.我查看了我能想到的所有日志,他们展示的是作业开始,PowerShell加载,然后任务调度程序取消.
我将每周任务重置为今天运行,它仍然失败了.我还测试了每周执行除PowerShell之外的任务,它运行得很好.
我更改了每周作业以使用与当前用户相同的帐户,它运行得很好.将其更改回其他帐户,再次失败.我不知道触发器和帐户之间的相关性.
小智 0
默认的工作选项可能会提供线索。有许多默认值可能会阻止作业运行。其中一些可能特定于您的环境。更多信息请访问:http://technet.microsoft.com/en-us/library/hh849674.aspx
如果不是这样,请告诉我。我想关注此主题并将此场景纳入故障排除指南中。
谢谢,June Blender (juneb) 高级编程作家,微软