尝试创建启动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组合的所有方法并且没有运气;-)
答案 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