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

使用schtasks.exe的Powershell计划任务返回错误无法识别成功,powershell,windows-task-scheduler,Powershell,Windows Task Scheduler,我正在尝试使用以下命令使用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 它在远程服务器上调度任务,但引发错误: “

我正在尝试使用以下命令使用
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
它在远程服务器上调度任务,但引发错误:

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

它确实成功地在正确的时间安排作业,但抛出此错误。

有人知道如何解决此错误吗?

显示此错误是因为当您创建
$command
变量时,您将其值设置为表达式的结果,即
成功
。该命令在执行
调用表达式
之前运行。因此,
调用表达式
实际运行的结果(
SUCCESS
)是scriptblock,您会得到一个错误。证明:

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

显示该错误是因为当您创建
$command
变量时,您将其值设置为表达式的结果,即
SUCCESS
。该命令在执行
调用表达式之前运行。因此,
调用表达式
实际上正在运行结果(
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

非常感谢您详细地向我解释正在发生的事情。它非常有效。非常感谢您详细地向我解释正在发生的事情。它非常有效。感谢您Erwin对其进行编辑并使其更易于阅读。感谢您Erwin对其进行编辑并使其更易于阅读。