我正在尝试通过 schtasks 命令创建一个计划任务,并且我在如何为 / RP <上的密码转义双引号(和其他可能的特殊字符)而苦苦挣扎/ strong>参数。
SCHTASKS /create /tn "Task name" /tr "powershell D:\path\to\powershell\script\powershellScript.ps1" /ru userName /rp pass"word /rl HIGHEST /f /sc MONTHLY /st 02:00
我到目前为止尝试过的一些示例(经过大量搜索),没有任何效果(以及我能想到的所有组合):
每次,我得到的错误消息总是相同的(或非常相似的),这表明双引号会使命令的解释中断:
语法无效。缺少强制选项“ sc”。输入“创建/?”对于 用法。
有可能吗?
答案 0 :(得分:0)
由于任务创建是从PowerShell脚本执行的,因此在这种情况下,我最后搜索了密码文本并分析了是否存在双引号。
在这种情况下, schtasks 会提示您重新输入密码,这样便不会崩溃。
if($password.contains('"')){ #if the password contains double quotes, prompt them, to avoid the task creation to crash
SCHTASKS /create /tn "Task name" /tr "powershell D:\path\to\powershell\script\powershellScript.ps1" /ru userName /rp * /rl HIGHEST /f /sc MONTHLY /st 02:00
}else{
SCHTASKS /create /tn "Task name" /tr "powershell D:\path\to\powershell\script\powershellScript.ps1" /ru userName /rp "$password" /rl HIGHEST /f /sc MONTHLY /st 02:00
}
答案 1 :(得分:0)
问题是您没有转义命令中的反斜杠。
在尝试安排同步开始并传递参数告诉它在哪里时,我遇到了相同的问题。麻烦的参数是-generate=""
和-home="C:\SyncThing\config"
。对我来说,我需要的命令是:
schtasks /create /sc onstart /TN SyncThing /TR "C:\\SyncThing\\syncthing.exe -home=\"C:\\SyncThing\\config\" -generate=\"\""
因此,将命令及其参数放在双引号中,并在其中将双引号和反斜杠放在反斜杠之前。就您而言,这将呈现:
SCHTASKS /create /tn "Task name" /tr "powershell D:\\path\\to\\powershell\\script\\powershellScript.ps1" /ru userName /rp pass\"word /rl HIGHEST /f /sc MONTHLY /st 02:00