2

我正在尝试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、函数、脚本文件或可运行程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

它确实在正确的时间成功地安排了作业,但会引发此错误。
有谁知道如何解决这个错误?

4

1 回答 1

2

显示错误是因为当您创建$command变量时,您将它的值设置为表达式的 RESULT,即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
于 2013-02-06T21:02:03.293 回答