4

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

但任务计划程序将操作显示为:

PowerShell "& "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0"

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

4

3 回答 3

3

尝试使用 powershell.exe 的 -File 参数指定要运行的脚本,并在末尾添加脚本的参数

powershell.exe -File "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0

更新

Boolean 和 Switch 参数似乎是-File问题 。这将起作用:

powershell.exe "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0
于 2013-05-23T21:31:44.670 回答
3

通过使用 \" 作为内引号来解决它。必须在 PowerShell 脚本中将 ' 与 \\\`" 交换

$command = "PowerShell \`"& \\\`"C:\ProgramFiles (x86)\MyDir\MyScript.ps1\\\`" $myStringParam $myBooleanParam\'"" 

所以任务计划程序显示

PowerShell "& \"C:\Program Files (x86)\MyDir\MyScript.ps1\" Cat 0"
于 2013-05-24T14:52:46.233 回答
0

对 powershell使用 -command参数:

在没有任务 sceulder 的情况下,你将在你的 powershell 中执行什么:

C:\Scripts\mypsscript.ps1 -parameter 'nice value'

你给任务调度器的东西:

要运行的程序:Powershell

论据:

-Command "& C:\Scripts\mypsscript.ps1 -parameter 'nice value'"
于 2017-03-16T14:54:20.990 回答