PowerShell添加任务以使用参数运行PowerShell脚本

时间:2013-05-23 21:10:08

标签: powershell schtasks

我正在尝试从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"

“和”互相取消,因为'总是在这里切换到',因此任务失败。

3 个答案:

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