SchTasks在Windows 2008 R2上发出错误(0x1)

我有一个powershell脚本,创build作为自动化过程的一部分的计划任务,我的语法如下;

schtasks /create /s ServerName /u $username /p $password /ru $username /rp $password /sc once /sd $StartDate /st $StartTime /tn $taskname /tr "\\ServerName\c$\$TaskName\$Taskname.bat" 

任务成功创build,但执行时间到了,总是失败,出现错误(0X1)。

如果我单独运行batch file,它运行完美; 所以我的日程安排任务是错误的。

然后我发现它工作时,我提供了“开始”目录path。

我的问题是,为什么我应该提供一个开始的path,当明确说在任务的属性中的“可选”?

我的另一个问题是如何提供path的开始? 尝试了很多方法,一切都失败了,有没有自动化的方式来做到这一点? 我应该手动更新每个任务吗?

我的问题是,为什么我应该提供一个开始的path,当明确说在任务的属性中的“可选”?

比方说,我正在创build一个将运行Powershell脚本的计划任务:

在这里输入图像说明

为什么这是错的? 首先,我们不确定powershell.exe是否能够正确parsing,因为我们不知道执行预定任务的用户是否正确设置了他或她的PATH环境variables。 根据您设置的任务运行方式,无论是系统还是域用户,他们的PATHvariables将会不同。 有时候它可以正常工作,并且powershell.exe可以正常启动,但是为什么不能继续下去,并且猜测它并且指定完全限定的path名​​称powershell.exe可执行文件。

其次,script.ps1是在哪里? 你没有指定。 Powershell即将启动,其启动目录将为%WINDIR%\System32 。 除非这是你存储脚本的地方(我希望它不是),否则Powershell将无法find它。

在这里输入图像说明

现在我们已经为可执行文件和脚本提供了完全合格的path名。 但是我们仍然没有得到“开始(可选)”的用途。 好吧,我们到了那里。

script.ps1的内容是这样的:

"Hello world!" | Out-File test.txt

所以如果我现在要运行上面的计划任务,启动运行script.ps1的Powershell,那么你认为test.txt会写在哪里?

如果你猜%WINDIR%\System32 ,那么你得到一个cookie!

如果我想将test.txt转到C:\Scripts ,那么我将C:\Scripts键入“Start in(optional)”字段中!

这就是为什么它是可选的。

我还应该指出,你也可以通过在你的脚本中使用完全合格的path名来解决这个问题,以便让你的东西走到你希望他们去的地方,而不必担心PATHvariables和工作目录。


现在谈到第二个问题。

schtasks.exe似乎没有能力添加计划任务的“开始”或“工作目录”。 游民。

有一件事你可以做的是使用XML的任务计划2.0任务,这让你设置工作目录。 这里是我为这个问题创build的testing任务的XML:

 <?xml version="1.0" encoding="UTF-16"?> <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2013-07-19T09:41:27.0446696</Date> <Author>DOMAIN\user</Author> </RegistrationInfo> <Triggers /> <Principals> <Principal id="Author"> <UserId>DOMAIN\user</UserId> <LogonType>InteractiveToken</LogonType> <RunLevel>LeastPrivilege</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>P3D</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <Exec> <Command>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Command> <Arguments>C:\Scripts\script.ps1</Arguments> <WorkingDirectory>C:\Scripts</WorkingDirectory> </Exec> </Actions> </Task> 

您可以使用schtasks /XML从XML文件中以脚本方式导入任务。