Powershell和schtask与任务有空间

时间:2012-05-10 21:20:09

标签: powershell schtasks.exe

我正在使用与PowerShell的schtask命令。发生的问题是当它是C:\ Program Files \时它认为路径只是C:\ Program而路径的其余部分是争论。我试图通过使用字段的前后字符来逃避它,但确实有所不同。我怎么能做到这一点?我无法硬编码路径,因为它可以在用户安装时更改。

我在Windows 7 x64中创建了这个。它创建脚本返回的任务。但是,当我在任务计划中查看它时,任务的属性,然后是操作,并点击编辑。它将程序显示为C:\ Program,然后将其余部分显示为参数。

enter image description here

脚本:

$folder = Split-Path $MyInvocation.MyCommand.Path -Parent
$app = "\Demon.DatabasePurge.exe"
$exe = $app.Insert(0, $folder)
schtasks /create /tn "Demon Purge Job" /sc daily /st 00:00:00 /tr $exe

以下是我的尝试:

$folder = Split-Path $MyInvocation.MyCommand.Path -Parent
$app = "\Demon.DatabasePurge.exe`""
$exe = $app.Insert(0, $folder)
$exe2 = $exe.Insert(0, "`"")
schtasks /create /tn "Demon Purge Job" /sc daily /st 00:00:00 /tr $exe2

3 个答案:

答案 0 :(得分:13)

我也遇到了这个问题..有这个问题的其他人的答案是包含单引号

/TR "'C:\Program Files (x86)\etc\test.exe'"

答案 1 :(得分:6)

我在Windows Server 2008 R2上遇到了同样的问题。虽然Microsoft support表示您应该能够用“我从来没有工作过,但单引号有效。”此外,带空格的参数也可以用单引号括起来:

schtasks /create /f /tn "Test" /tr "'c:\program files\test.bat' arg1 'arg 2 with spaces' arg3" /sc Daily /st 00:00

或构建要执行的字符串(并使用$ folder变量):

$createTask = "schtasks /create /f /tn `"Demon Purge Job`" /tr `"'$folder\Demon.DatabasePurge.exe' arg1 'arg 2 with spaces' arg3`"" /sc daily /st 00:00
Invoke-Expression $createTask

第一个示例生成以下任务操作屏幕: enter image description here

答案 2 :(得分:0)

要变通解决此问题,请在反斜杠\和引号"字符组合(例如\")之间加上任务的路径部分(不包括参数或开关)。创建包含空格的路径或命令时,照常用双引号将任务的完整路径(包括自变量或开关)括起来。

代码:

schtasks /create /f /tn "Test" /tr "'c:\program files\test.bat' arg1 'arg 2 with spaces' arg3" /sc Daily /st 00:00

替换:

schtasks /create /f /tn "Test" /tr "\"c:\program files\test.bat\" arg1 'arg 2 with spaces' arg3" /sc Daily /st 00:00