我正在尝试使用SCHTASKS在Windows上创建计划任务。参数包括单引号。如果我手动创建我的任务,它可以工作。在Windows任务调度器GUI中,“详细信息”(在操作选项卡中)如下所示:
powershell (New-Object System.Net.WebClient).DownloadString ('http://mywebserver/myscript.ps1\') | powershell.exe -noprofile -然而,当我输入我的SCHTASKS命令...
schtasks.exe /Create /TN "My Task" /TR "powershell (New-Object System.Net.WebClient).DownloadString ('http://mywebserver/myscript.ps1\') | powershell.exe -noprofile -" /SC MINUTE /mo 60 /RL HIGHEST然后,这将出现在GUI中(请注意,第一个实例中的单引号解释为双引号,但第二个实例中不是:
powershell (New-Object System.Net.WebClient).DownloadString ("http://mywebserver/myscript.ps1\') | powershell.exe -noprofile -我尝试转义它等(这对双引号很好,但不是单引号),但似乎不能弄明白。?!
非常感谢您提出的任何建议。
发布于 2016-05-20 00:15:27
我最近偶然发现了同样的问题。
我需要使用以下命令向任务添加一个操作:
Powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object Net.WebClient).DownloadString('https://url/to/script.ps1'))"使用此命令手动创建任务是完全可能的,但是使用schtasks命令,显然不可能在任务的参数字段中呈现单引号(至少前面没有反斜杠,这会使其不可用)。
因此,经过一些修改之后,我找到了一种不使用单引号来指定参数的方法:
Powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object Net.WebClient).DownloadString(\"https://url/to/script.ps1\"))"这也适用于任务管理器..。耶!
这需要更多的工作,但我手动使用schtasks命令(在命令提示符中,而不是powershell中)使其工作,如下所示:
schtasks /Create /TN "My Task Name" /RU SYSTEM /SC DAILY /ST 23:00 /TR "Powershell -NoProfile -ExecutionPolicy Bypass -Command \"iex ((New-Object Net.WebClient).DownloadString(\\\"https://url/to/script.ps1\\\""))\""是的,这些是url周围的三个反斜杠...基本上,一个引号需要用一个反斜杠转义,一个反斜杠需要用另一个反斜杠转义。
现在让它从powershell开始工作……更多的纠缠之后,我得到了这个结果:
schtasks /Create /TN "My Task Name" /RU SYSTEM /SC DAILY /ST 23:00 /TR "Powershell -NoProfile -ExecutionPolicy Bypass -Command \`"iex ((New-Object Net.WebClient).DownloadString(\\\`"https://url/to/script.ps1\\\`"))\`""这基本上是另一层转义:引号需要用反引号转义。
我的头开始旋转,但我很高兴我驯服了野兽:)
发布于 2014-10-16 19:58:32
PowerShell使用不幸的反引号(`)作为转义字符。反斜杠没有特殊的含义。更好的是,使用--%,这是一个鲜为人知的技巧。
schtasks.exe --% /F /Create /TN "My Task" /TR "powershell (New-Object System.Net.WebClient).DownloadString('http://mywebserver/myscript.ps1') | powershell.exe -noprofile" /SC MINUTE /mo 60 /RL HIGHEST这基本上意味着,“亲爱的PowerShell解析器,在路径中找到schtasks.exe,运行它,并按原样传递'--%‘后面的任何内容。”
发布于 2014-10-16 23:04:58
那么我建议这样做:
schtasks.exe /F /Create /TN "My Task" /SC MINUTE /mo 60 /RL HIGHEST /TR "powershell.exe -ExecutionPolicy Bypass -NoProfile -File \\UNC\to\Script.ps1"并且所有的执行都在.ps1中。
请注意,您将以'NT AUTHORITY\SYSTEM‘的身份进入该UNC路径,因此需要适当的权限。
https://stackoverflow.com/questions/26400674
复制相似问题