公号:软测小生(ruancexiaosheng)
关于schtasks 详细语法可以到微软的官网学习
schtasks(博客园)
今天突然接触到schtasks这个命令,感觉挺有用的,索性就花点时间学习记录一下。
由于我是做自动化测试的,基于Selenium,使用到Selenium Grid, 一台Hub机控制着多台Node机。倘若出现关机,或者要重启Hub和全部的Node就必须手动逐台打开本地文件-->运行Node.bat脚本文件,启动服务,这样子完全不科学,不是自动化,应该使用自动化解决这些事情,而不是手动一台一台的去启动。
对于测试机器是Windows的,所以使用schtasks命令解决,并且部署到Jenkins,也可以实现每天定时的自动重启,哇像这样一来,想想都开心,有解决了一项自动化。
image
思路:每天自动重启远程机上的Hub和Node,新构建一个Jenkins Job, 配置运行时间,比如每天上班运行自动化脚本之前重启一次清一下缓存,每天下班之后,会有大量的自动化监控项目在跑,也重启一下(当然这个重启运行时间可以根据你的实际需求来制定)。
接下来就是写执行dos命令到Windows执行:(REM 文本内容 在批处理文件中添加注解,注释)
image.png
schtasks run
立即运行计划任务。run 操作忽略计划,但使用程序文件位置、用户帐户和保存在任务中的密码立即运行任务。
语法
schtasks /run /tn TaskName [/s Computer [/u [Domain*]User [/p* Password]]]
参数
/tn TaskName
必需。标识任务。
/s Computer
指定远程计算机的名称或 IP 地址(带有或不带有反斜杠)。默认设置为本地计算机。
/u [Domain] User
使用指定用户帐户的权限运行该命令。默认情况下,使用本地计算机当前用户的权限运行该命令。
指定的用户帐户必须是远程计算机上 Administrators 组的成员。只有使用 /s 时,/u 和 /p 参数才有效。
/p Password
指定在 /u 参数中指定的用户帐户的密码。如果使用 /u 参数,但忽略** /p 参数或密码参数,Schtasks 将提示您输入密码。
只有使用 /s 时,/u** 和 /p 参数才有效。
/?
在命令提示符下显示帮助。
备注
- 使用这个操作来测试任务。如果任务没有运行,请查阅“任务计划程序服务”事务日志 Systemroot\SchedLgU.txt,以获取错误。
- 运行任务既不会影响任务计划,也不会更改为任务计划好的下次运行时间。
- 要远程运行任务,必须在远程计算机上计划任务。在运行该任务时,它仅在远程计算机上运行。要验证任务正在远程计算机上运行,请使用“任务管理器”或“任务计划程序”事务日志 Systemroot\SchedLgU.txt
示例
在本地计算机上运行任务
以下命令用于启动“Security Script”任务。
schtasks /run /tn "Security Script"
作为响应,SchTasks.exe 启动与任务相关联的脚本并显示以下消息:
SUCCESS: Attempted to run the scheduled task "Security Script".
正如消息提示的那样,Schtasks 尝试启动程序,但它无法验证该程序实际上已经启动。
在远程计算机上运行任务
以下命令用于在远程计算机 Svr01 上启动 Update 任务:
schtasks /run /tn Update /s Svr01
在这种情况下,SchTasks.exe 显示以下错误消息:
ERROR: Unable to run the scheduled task "Update".
查看 Svr01 上的“计划任务程序”事务日志 C:\Windows\SchedLgU.txt 以获取错误的原因。在这种情况下,日志中显示以下条目:
"Update.job" (update.exe) 3/26/2001 1:15:46 PM ** ERROR **
The attempt to log on to the account associated with the task failed, therefore, the task did not run.
The specific error is:
0x8007052e: Logon failure: unknown user name or bad password.
Verify that the task's Run-as name and password are valid and try again.
显然,任务中的用户名或密码在此系统中无效。下面的 schtasks /change 命令用于更新 Svr01 上 Update 任务的用户名和密码:
schtasks /change /tn Update /s Svr01 /ru Administrator /rp PassW@rd3
在 **change **命令完成之后,重新运行 **run **命令。此时,Update.exe 程序启动,SchTasks.exe 显示以下消息:
SUCCESS: Attempted to run the scheduled task "Update".
正如消息提示的那样,Schtasks 尝试启动程序,但它无法验证该程序实际上已经启动。
schtasks end
停止由任务启动的程序。
语法
schtasks /end /tn TaskName [/s Computer [/u [Domain*]User [/p* Password]]]
参数
/tn TaskName
必需。标识启动程序的任务。
/s Computer
指定远程计算机的名称或 IP 地址。默认设置为本地计算机。
/u [Domain] User
使用指定用户帐户的权限运行该命令。默认情况下,使用本地计算机当前用户的权限运行该命令。
指定的用户帐户必须是远程计算机上 Administrators 组的成员。只有使用 /s 时,/u 和 /p 参数才有效。
/p Password
指定在 /u 参数中指定的用户帐户的密码。如果使用 /u 参数,但忽略 /p 参数或密码参数,Schtasks 将提示您输入密码。
只有使用 /s 时,/u 和 /p 参数才有效。
/?
显示帮助。
备注
SchTasks.exe 只终止由计划任务启动的程序实例。要停止其他进程,请使用 TaskKill,它是一个包含在 Windows XP Professional 中的工具。有关 TaskKill 的详细信息,请参阅 Taskkill。
示例
终止本地计算机上的任务
以下命令用于终止由 My Notepad 任务启动的 Notepad.exe 实例:
schtasks /end /tn "My Notepad"
作为响应,SchTasks.exe 停止由任务启动的 Notepad.exe 实例,并显示以下成功消息:
SUCCESS: The scheduled task "My Notepad" has been terminated successfully.
终止远程计算机上的任务
以下命令用于终止远程计算机 Svr01 上由 InternetOn 任务启动的 Internet Explorer 实例:
schtasks /end /tn InternetOn /s Svr01
作为响应,SchTasks.exe 停止由任务启动的 Internet Explorer 实例,并显示以下成功消息:
SUCCESS: The scheduled task "InternetOn" has been terminated successfully.
自动化测试之Windows计划定时任务
DOS 批处理命令For循环命令详解(点击此标题跳转查看 )
网友评论
轻量级的自动化测试框架,
爬虫有用资源分享给自学爱好者,联盟群,群:330374464 。