如果涉及路径中的空白,如何通过Invoke-command创建计划任务?

时间:2013-08-22 16:52:32

标签: powershell scheduled-tasks

尝试创建启动Powershell副本项任务的计划任务。 (为了缓解双跳问题))在* .ps1文件中使用copy-item命令并且只是调用它不是我喜欢的方式,因为我计划在这个例子工作时动态构建路径名。 / p>

以下按预期工作:

Invoke-Command -session $mysession -ScriptBlock { schtasks /create /RU myuser /RP mypasswd  /TN "Temp Task Copy-Item" /TR "powershell -ExecutionPolicy Bypass -command  copy-item -path \\192.168.1.1\share\Folder -Destination C:\Temp" /SC ONCE /ST 22:35} 

但是当我想要复制到具有空白 C:\ Program Files(x86)\ Temp 而不是 C:\ Temp 的路径时,神奇的语法是什么? 想想我已经尝试了Backticks组合的所有方法并且没有运气;-)

2 个答案:

答案 0 :(得分:0)

尝试在带有空格的路径周围使用单引号,它会起作用。

Invoke-Command -session $mysession -ScriptBlock { schtasks /create /RU myuser /RP mypasswd  /TN "Temp Task Copy-Item" /TR "powershell -ExecutionPolicy Bypass -command  copy-item -path \\192.168.1.1\share\Folder -Destination 'C:\Program Files (x86)\Temp'" /SC ONCE /ST 22:35} 

答案 1 :(得分:0)

为我的问题找到了一个解决方法:我跳过使用Copy-Item并使用普通CMD作为副本:

#Set Source & Dest
$source = "\\192.168.1.1\share\Folder\*"
$dest = "C:\Program Files (x86)\Temp"

#Build command (Note: Single Quotes +"'" will appear in Schedueld Task as Double Quotes
$copycmd = "schtasks /create /RU myuser/RP mypasswd  /TN `"Temp Task Copy-Item`" /SC ONCE /ST 22:35 /TR `"cmd /c copy "+"'"+"$source"+"'"+" "+"'"+"$dest"+"'"+" "
#Run Command
Invoke-Command -session $mysession -ScriptBlock { cmd /c  "$args"} -ArgumentList $copycmd