我正在尝试创建一个batch
文件,以便在多台远程PC上运行自动脚本
我的主机应该能够连接到任何远程PC并设置本地计划任务
批处理文件使用以下命令:
schtasks /delete <--- remove any previous version
/S \\10.1.2.3 <--- the remote PC's IP
/U theAdministrator <--- the username to access the PC
/P MyPassword <--- the password to access the PC
/TN MyTask <--- task name
/F <--- don't ask, just do it option
schtasks /create
/S \\10.1.2.3
/U theAdministrator
/P MyPassword
/RU theAdministrator <--- the username to execute the task
/RP MyPassword <--- the password to execute the task
/SC dayly /MO 1 <--- run every day
/TN MyTask
/TR C:\task.bat <--- the script to run on the remote PC
当我启动第一个/delete
命令时,一切正常,但第二个返回警告:
“任务已创建,但可能无法运行,因为无法设置帐户信息”
(如果这不是确切的错误消息,我很抱歉,但我必须自己翻译)
我确信用户名和密码是正确的,因为/delete
命令没问题,并且/create
也会创建任务,即使它没有运行。
因此,问题应该是/RU
和/RP
选项......
解决方案:
如果没有此错误消息我无法执行命令,无论如何我已达到目标并找到两个不同的选项:
使用AT命令的最简单方法:
AT \\10.1.2.3 12:00 C:\task.bat
没有问题,但需要指定一小时才能运行;这意味着如果您希望立即执行任务,则必须聊聊%time%
变量
此选项也不允许设置用户运行任务(我已将其作为管理员进行测试,并且任务已设置为以NT AUTHORITY/SYSTEM
执行)
使用PsTools的全功能方式:
将schtasks /create
命令传递给PsExec
set command=schtasks /create /SC dayly /MO 1 /TN MyTask /TR C:\task.bat /RU theAdministrator /RP MyPassword
PsExec \\10.1.2.3 -u theAdministrator -p MyPassword %command%
的 NB。 的
访问远程PC的目标 IP ,用户和密码必须在PsExec
命令中设置,因此您不需要需要schtasks
脚本task.bat已经存在于目标PC的根C:\上。
答案 0 :(得分:0)
PC是否在域上?
我之前在域上使用过schtasks,它在没有/ru
和/rp
的情况下工作。我刚用/u
和/p
作为我正在安排任务的机器的用户名和密码。
从来没有在标准的工作组/家庭组机器上尝试过它
您可能还需要查看this,并确保所有远程计算机上的UAC都处于关闭状态,因为这可能会导致问题。
修改的
我刚尝试从一台笔记本电脑到另一台笔记本电脑(不涉及任何域名)。 对我来说,这两行有效(在CMD中,因此应该通过批处理)
schtasks /delete /S \\xxx.xxx.xxx.xxx /U USERNAME /P PASSWORD /TN MyTask /F
schtasks /create /S \\xxx.xxx.xxx.xxx /U USERNAME /P PASSWORD /TN MyTask /SC once /st START_TIME /it /TR c:\test.bat
值得注意的是;
- 显然,用你需要的IP替换x,用相关数据替换USERNAME和PASSWORD
- 我使用的是/sc once /st START_TIME
,而不是/sc daily /mo 1
,但这不应该有所作为
- 我添加了/it
(取自CMD)“Enalbes任务以交互方式运行......”(根据我的经验,不使用它会导致问题)
- 我正在安排任务的笔记本电脑上的用户笔记本电脑上不存在我从中运行schtasks
- 我在笔记本电脑上运行schtasks的笔记本电脑上的用户我正在安排任务(因此不存在于客户端/主机上的用户无关紧要)