我正在尝试从PowerShell脚本向任务计划程序添加一个任务,该脚本将运行带参数的PowerShell脚本。
文件路径中的空格与整个命令周围的必要引号冲突,SCHTASKS将'转换为',因此我无法正确封装。
$command = "PowerShell \`"& 'C:\ProgramFiles (x86)\MyDir\MyScript.ps1' $myStringParam $myBooleanParam\'""
Write-Host $command # This outputs: PowerShell \"& 'C:\Program Files (x86)\MyDir\MyScript.ps1' Cat 0\"
SCHTASKS /Create /TN "MyTask" /TR "$command" /SC DAILY /ST 01:30:00 /RL Highest /EC ScriptEvents /RU SYSTEM
但是Task Scheduler将Actions显示为:
PowerShell "& "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0"
“和”互相取消,因为'总是在这里切换到',因此任务失败。
答案 0 :(得分:3)
尝试使用powershell.exe的-File参数指定要运行的脚本,并在最后添加脚本的参数
powershell.exe -File "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0
<强>更新强>
布尔和切换参数似乎是problem with -File。这将有效:
powershell.exe "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0
答案 1 :(得分:3)
通过使用\“作为内部引号来解决它。必须在PowerShell脚本中交换'与\\\`”
$command = "PowerShell \`"& \\\`"C:\ProgramFiles (x86)\MyDir\MyScript.ps1\\\`" $myStringParam $myBooleanParam\'""
所以任务计划程序显示
PowerShell "& \"C:\Program Files (x86)\MyDir\MyScript.ps1\" Cat 0"
答案 2 :(得分:0)
对powershell使用 -command 参数:
在没有任务风险的情况下,你将在powershell中执行什么:
C:\Scripts\mypsscript.ps1 -parameter 'nice value'
你给任务的内容是什么:
运行程序: 的powershell
参数:
-Command "& C:\Scripts\mypsscript.ps1 -parameter 'nice value'"