我们有一些脚本可以使用 PowerShell 作为我们应用程序的一部分来创建计划作业。最近在测试它们时,我注意到其中一些总是立即失败,并且没有产生任何输出(它们甚至没有出现在Get-Job列表中)。
经过多天的调整,我们已经设法将它与任何设置为每周运行的作业隔离开来。下面是一个脚本,它创建两个完全相同的作业。当我们在我们的域上运行它,并提供域用户的凭据,然后强制两个作业在任务计划程序 GUI 中运行(右键单击 -> 运行),每天运行良好(0x0 结果),每周运行失败(0x41306)。
注意:如果我不提供 -Credential 参数,两个工作都可以正常工作。仅当任务是每周一次并且以此域用户身份运行时,作业才会失败。
我找不到有关为什么会发生这种情况的信息,也找不到任何原因它在每周工作中的表现会有所不同。Task Scheduler中的“History£”选项卡几乎没有任何有用的信息,只有“任务因用户请求而停止”和“任务终止”,两者都没有有用的信息:
任务计划程序终止了“\Microsoft\Windows\PowerShell\ScheduledJobs\Test1”任务的“{eabba479-f8fc-4f0e-bf5e-053dfbfe9f62}”实例。任务计划程序根据用户 "MyDomain\SomeUser" 的请求停止了任务 "\Microsoft\Windows\PowerShell\ScheduledJobs\Test1" 的实例 "{eabba479-f8fc-4f0e-bf5e-053dfbfe9f62}"。
这是怎么回事?为什么每周任务的运行方式不同,我该如何解决这个问题?
这是 Windows Server 2008 R2 上的 PowerShell v3。我一直无法在本地复制此内容,但我没有以与我们生产域中的用户相同的方式设置用户(我正在处理此问题,但我想尽快发布此内容,希望有人知道发生了什么!)。
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 …Run Code Online (Sandbox Code Playgroud) powershell scheduled-task windows-server-2008-r2 powershell-v3.0
我读到为一个也有自己的 SPF 的域使用 CNAME 是无效的,因为所有记录都是从 CNAME 指向的域中获取的。
然而,这似乎不是我发生的事情。我已pi.dantup.comCNAMEd 到dantuppi.dynv6.net,但是我的 SPF 记录似乎工作正常(dynv6.net域上没有 SPF :
https://toolbox.googleapps.com/apps/dig/#CNAME/pi.dantup.com https://toolbox.googleapps.com/apps/dig/#TXT/pi.dantup.com
这似乎可以很好地使用此工具进行测试。但是,一位朋友的设置非常相似,似乎无法正常工作。在深入研究之前,我试图了解我的做法是否正确?