我正在尝试使用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的名称, 功能,脚本文件或可操作程序。检查拼写 名称,或者如果包含路径,请验证路径是否正确,然后重试。
它确实在正确的时间成功安排了作业,但却抛出了这个错误 有谁知道如何解决这个错误?
答案 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