如何在schtasks密码上转义双引号

时间:2018-06-27 06:55:38

标签: passwords escaping special-characters schtasks

我正在尝试通过 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

我到目前为止尝试过的一些示例(经过大量搜索),没有任何效果(以及我能想到的所有组合):

  • 用双引号引起来的密码: / rp“ pass” word“
  • 用单引号引起来的密码: / rp'pass“ word'
  • 使用^转义特殊字符: / rp“ pass ^” word“
  • 使用“: / rp“ pass”“ word”
  • 来转义特殊字符
  • 使用以下字符转义特殊字符: / rp“ pass \” word“

每次,我得到的错误消息总是相同的(或非常相似的),这表明双引号会使命令的解释中断:

  

语法无效。缺少强制选项“ sc”。输入“创建/?”对于   用法。

有可能吗?

2 个答案:

答案 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