使用schtasks.exe返回错误成功的Powershell计划任务无法识别

时间:2013-02-06 20:52:10

标签: powershell schtasks.exe

我正在尝试使用schtasks.exe使用以下命令安排另一个PowerShell脚本:

$Command = cmd /c "$Env:WinDir/system32/schtasks.exe /create /s $ComputerName  /tn $TaskName /tr $TaskRun /sc $Schedule /d $Days /st $StartTime /RU system"

Invoke-Expression $Command

它会在远程服务器上安排任务,但会抛出错误:

  

“术语'SUCCESS:'不被识别为cmdlet的名称,   功能,脚本文件或可操作程序。检查拼写   名称,或者如果包含路径,请验证路径是否正确,然后重试。

它确实在正确的时间成功安排了作业,但却抛出了这个错误 有谁知道如何解决这个错误?

1 个答案:

答案 0 :(得分:1)

显示错误是因为在创建$command变量时,将其值设置为表达式的结果,即SUCCESS。该命令在执行Invoke-Expression之前运行。因此,Invoke-Expression实际上正在运行结果(SUCCESS),因为它是脚本块,并且您收到错误。证明:

PS > $command = whoami

PS > $command
computer\user

PS > $command = 'whoami'

PS > $command
whoami

您可以像创建$command变量一样直接调用命令,也可以将表达式(cmd /c ...)保存为字符串,然后调用它。例如:

$Command = 'cmd /c "$Env:WinDir/system32/schtasks.exe /create /s $ComputerName  /tn $TaskName /tr $TaskRun /sc $Schedule /d $Days /st $StartTime /RU system"'

Invoke-Expression $Command